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 相关文章推荐
Jquery中Ajax 缓存带来的影响的解决方法
May 19 Javascript
JS 获取select(多选下拉)中所选值的示例代码
Aug 02 Javascript
js计算字符串长度包含的中文是utf8格式
Oct 15 Javascript
JS函数this的用法实例分析
Feb 05 Javascript
Vue.js仿Metronic高级表格(二)数据渲染
Apr 19 Javascript
基于easyui checkbox 的一些操作处理方法
Jul 10 Javascript
vue iView 上传组件之手动上传功能
Mar 16 Javascript
微信小程序开发的基本流程步骤
Jan 31 Javascript
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
Apr 13 Javascript
vue实现移动端省市区选择
Sep 27 Javascript
原生js无缝轮播插件使用详解
Mar 09 Javascript
jQuery 实现扁平式小清新导航
Jul 07 jQuery
详解利用 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
《APMServ 5.1.2》使用图解
2006/10/23 PHP
关于使用coreseek并为其做分页的介绍
2013/06/21 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
javascript中的对象创建 实例附注释
2011/02/08 Javascript
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
火狐下table中创建form导致两个table之间出现空白
2013/09/02 Javascript
JS替换文本域内的回车示例
2014/02/18 Javascript
jQuery Validation Plugin验证插件手动验证
2016/01/26 Javascript
Node.js中防止错误导致的进程阻塞的方法
2016/08/11 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
Angular2利用组件与指令实现图片轮播组件
2017/03/27 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
2017/03/28 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
2017/05/08 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
浅谈vue路径优化之resolve
2017/10/13 Javascript
vue脚手架搭建过程图解
2018/06/06 Javascript
JavaScript偏函数与柯里化实例详解
2019/03/27 Javascript
Vue infinite update loop的问题解决
2019/04/23 Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
2019/04/28 Javascript
vue实现tab栏点击高亮效果
2020/08/19 Javascript
python解析中国天气网的天气数据
2014/03/21 Python
django实现分页的方法
2015/05/26 Python
Python 实现微信防撤回功能
2019/04/29 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
浅谈Python中re.match()和re.search()的使用及区别
2020/04/14 Python
Python字符串及文本模式方法详解
2020/09/10 Python
HTML5中语义化 b 和 i 标签
2008/10/17 HTML / CSS
C语言笔试题回忆
2015/04/02 面试题
行政助理工作职责范本
2014/03/04 职场文书
五四青年节演讲稿
2014/05/26 职场文书
创先争优活动个人总结
2015/03/04 职场文书
掌握这项技巧,一年阅读300本书不是梦
2019/09/12 职场文书
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
2022/05/25 SQL Server