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 相关文章推荐
JavaScript 判断指定字符串是否为有效数字
May 11 Javascript
jQuery Tools Dateinput使用介绍
Jul 14 Javascript
js设置控件的隐藏与显示的两种方法
Aug 21 Javascript
影响jQuery使用的14个方面
Sep 01 Javascript
js闭包的用途详解
Nov 09 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
Dec 15 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
May 17 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
Jun 15 Javascript
js实现城市级联菜单的2种方法
Jun 23 Javascript
React Native使用百度Echarts显示图表的示例代码
Nov 07 Javascript
从零开始搭建一个react项目开发
Feb 09 Javascript
vue 详情跳转至列表页实现列表页缓存
Mar 27 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数组操作
2011/12/30 PHP
php生成无限栏目树
2017/03/16 PHP
javascript XML数据显示为HTML一例
2008/12/23 Javascript
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
一个网马的tips实现分析
2010/11/28 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
2013/04/18 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
jQuery+JSON实现AJAX二级联动实例分析
2015/12/18 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
原生JS实现几个常用DOM操作API实例
2017/01/19 Javascript
详解vue-cli中配置sass
2017/06/21 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
2018/01/24 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
[00:15]TI9观赛名额抽取
2019/07/10 DOTA
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
Python算术运算符实例详解
2017/05/31 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
Python面向对象程序设计示例小结
2019/01/30 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
Django1.11自带分页器paginator的使用方法
2019/10/31 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
celery在python爬虫中定时操作实例讲解
2020/11/27 Python
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
C面试题
2015/10/08 面试题
物业管理公司实习生自我鉴定
2013/09/19 职场文书
自我鉴定写作要点
2014/01/17 职场文书
审计主管岗位职责
2014/01/31 职场文书
教师评语大全
2014/04/28 职场文书
宿舍标语大全
2014/06/19 职场文书
农民工工资支付承诺书
2015/05/04 职场文书