JavaScript中如何判断一个值的类型


Posted in Javascript onSeptember 15, 2017

我们知道在js中有一个运算符可以帮助我们判断一个值的类型,它就是typeof运算符。

console.log(typeof 123);  //number
console.log(typeof '123'); //string
console.log(typeof true);  //boolean
console.log(typeof undefined); //undefined
console.log(typeof null); //object
console.log(typeof []);  //object
console.log(typeof {}); //object
console.log(typeof function() {}); //function

我们从以上结果可以看出typeof的不足之处,它对于数值、字符串、布尔值分别返回number、string、boolean,函数返回function,undefined返回undefined,除此以外,其他情况都返回object。

所以如果返回值为object,我们是无法得知值的类型到底是数组还是对象或者其他值。为了准确得到每个值的类型,我们必须使用js中另一个运算符instanceof。下面简单的说一下instanceof的用法。

instanceof运算符返回一个布尔值,表示指定对象是否为某个构造函数的实例。

instanceof运算符的左边是实例对象,右边是构造函数。它会检查右边构造函数的ptototype属性,是否在左边对象的原型链上。

var b = [];
b instanceof Array //true
b instanceof Object //true

注意,instanceof运算符只能用于对象,不适用原始类型的值。

所以我们可以结合typeof和instanceof运算符的特性,来对一个值的类型做出较为准确的判断。

//得到一个值的类型
function getValueType(value) {
  var type = '';
  if (typeof value != 'object') {
    type = typeof value;
  } else {
    if (value instanceof Array) {
      type = 'array';
    } else {
      if (value instanceof Object) {
        type = 'object';
      } else {
        type = 'null';
      }
    }
  }
  return type;
}
getValueType(123);  //number
getValueType('123'); //string
getValueType(true);  //boolean
getValueType(undefined); //undefined
getValueType(null); //null
getValueType([]);   //array
getValueType({});  //object
getValueType(function(){}); //function

总结

以上所述是小编给大家介绍的JavaScript中如何判断一个值的类型,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js删除所有的cookie的代码
Nov 25 Javascript
自己动手制作jquery插件之自动添加删除行的实现
Oct 13 Javascript
node.js中使用socket.io制作命名空间
Dec 15 Javascript
jQuery弹出层插件Lightbox_me使用指南
Apr 21 Javascript
JQuery中ajax方法访问web服务实例
Jul 18 Javascript
基于JavaScript代码实现随机漂浮图片广告
Jan 05 Javascript
JavaScript中定义类的方式详解
Jan 07 Javascript
js判断输入字符串是否为空、空格、null的方法总结
Jun 14 Javascript
JS编写函数实现对身份证号码最后一位的验证功能
Dec 29 Javascript
微信小程序与php 实现微信支付的简单实例
Jun 23 Javascript
JS设置随机出现2个数字的实例代码
Jul 19 Javascript
vue-vuex中使用commit提交mutation来修改state的方法详解
Sep 16 Javascript
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
Sep 15 #Javascript
动态创建Angular组件实现popup弹窗功能
Sep 15 #Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
Sep 15 #Javascript
angular4模块中给标签添加背景图的实现方法
Sep 15 #Javascript
基于Vue生产环境部署详解
Sep 15 #Javascript
基于Vue单文件组件详解
Sep 15 #Javascript
json2.js 入门教程之使用方法与实例分析
Sep 14 #Javascript
You might like
用PHP实现读取和编写XML DOM代码
2010/04/07 PHP
PHP 获取远程文件大小的3种解决方法
2013/07/11 PHP
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
PHP答题类应用接口实例
2015/02/09 PHP
3种php生成唯一id的方法
2015/11/23 PHP
java模拟PHP的pack和unpack类
2016/04/13 PHP
php自定义函数实现JS的escape的方法示例
2016/07/07 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
解决jquery中美元符号命名冲突问题
2014/01/08 Javascript
jQuery中的height innerHeight outerHeight区别示例介绍
2014/06/15 Javascript
使用nodejs、Python写的一个简易HTTP静态文件服务器
2014/07/18 NodeJs
禁止iframe页面的所有js脚本如alert及弹出窗口等
2014/09/03 Javascript
分享一款基于jQuery的视频播放插件
2014/10/09 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
Javascript中Date类型和Math类型详解
2016/02/27 Javascript
Javascript基础知识盲点总结之函数
2016/05/15 Javascript
vue-router实现webApp切换页面动画效果代码
2017/05/25 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
2018/12/10 jQuery
详解小程序云开发数据库
2019/05/20 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
原生js生成图片验证码
2020/10/11 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
Python打印scrapy蜘蛛抓取树结构的方法
2015/04/08 Python
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
Python3使用PySynth制作音乐的方法
2019/09/09 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
《九色鹿》教学反思
2014/02/27 职场文书
小学庆六一活动总结
2014/08/28 职场文书
cf战队宣传语
2015/07/13 职场文书
《春酒》教学反思
2016/02/22 职场文书