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 相关文章推荐
How to Auto Include a Javascript File
Feb 02 Javascript
如何快速的呈现我们的网页的技巧整理
Jul 01 Javascript
用JS写的一个TableView控件代码
Jan 23 Javascript
js打印纸函数代码(递归)
Jun 18 Javascript
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
Jun 28 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
Aug 19 Javascript
jquery序列化表单去除指定元素示例代码
Apr 10 Javascript
JQuery中Ajax()的data参数类型实例分析
Dec 15 Javascript
three.js快速入门【推荐】
Jan 21 Javascript
原生JS实现幻灯片
Feb 22 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
Jul 31 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
Aug 31 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通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
PHP书写格式详解(必看)
2016/05/23 PHP
PHP中md5()函数的用法讲解
2019/03/30 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
Javascript 兼容firefox的一些问题
2009/05/21 Javascript
jquery validate.js表单验证的基本用法入门
2010/05/13 Javascript
Javascript变量函数浅析
2011/09/02 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
2013/08/26 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
2013/10/24 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
jQuery标签编辑插件Tagit使用指南
2015/04/21 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
javascript变量提升和闭包理解
2018/03/12 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
vue-cli2 构建速度优化的实现方法
2019/01/08 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
layui form表单提交之后重新加载数据表格的方法
2019/09/11 Javascript
vue使用echarts实现水平柱形图实例
2020/09/09 Javascript
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
用Python编写脚本使IE实现代理上网的教程
2015/04/23 Python
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
python 队列详解及实例代码
2016/10/18 Python
在windows下Python打印彩色字体的方法
2018/05/15 Python
Python中一些深不见底的“坑”
2019/06/12 Python
python禁用键鼠与提权代码实例
2019/08/16 Python
大家都说好用的Python命令行库click的使用
2019/11/07 Python
python打开音乐文件的实例方法
2020/07/21 Python
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
人事主管岗位职责范本
2013/12/04 职场文书
原材料检验岗位职责
2014/03/15 职场文书
班组拓展活动方案
2014/08/14 职场文书
暑假社会实践证明格式
2014/10/28 职场文书
升学宴学生答谢词
2015/01/05 职场文书
出国导师推荐信
2015/03/25 职场文书