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将数据库中的TEXT类型数据动态赋值到TEXTAREA中
Apr 20 Javascript
JavaScript写的一个DIV 弹出网页对话框
Aug 14 Javascript
五段实用的js高级技巧
Dec 20 Javascript
Document:getElementsByName()使用方法及示例
Oct 28 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
Dec 04 Javascript
JavaScript网页定位详解
Jan 13 Javascript
jquery如何获取元素的滚动条高度等实现代码
Oct 19 Javascript
BootStrap Typeahead自动补全插件实例代码
Aug 10 Javascript
分分钟玩转Vue.js组件
Oct 25 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
Dec 20 Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
Jan 30 Javascript
JavaScript设计模式之单例模式简单实例教程
Jul 02 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
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
B2K与车机的中波PK
2021/03/02 无线电
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
js 数组克隆方法 小结
2010/03/20 Javascript
JavaScript闭包 懂不懂由你反正我是懂了
2011/10/21 Javascript
js相册效果代码(点击创建即可)
2013/04/16 Javascript
jQuery获取页面元素绝对与相对位置的方法
2015/06/10 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
2015/08/14 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
[44:40]2018DOTA2亚洲邀请赛3月30日 小组赛A组Liquid VS OG
2018/03/31 DOTA
[01:08:30]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第一场 2月28日
2021/03/11 DOTA
python中协程实现TCP连接的实例分析
2018/10/14 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
Python学习笔记之自定义函数用法详解
2019/06/08 Python
深入了解Python在HDA中的应用
2019/09/05 Python
Python传递参数的多种方式(小结)
2019/09/18 Python
python通过实例讲解反射机制
2019/10/17 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
Python读取yaml文件的详细教程
2020/07/21 Python
Python 执行矩阵与线性代数运算
2020/08/01 Python
美国牛仔品牌:True Religion
2018/11/16 全球购物
毕业生找工作的求职信范文
2013/12/24 职场文书
上课打牌的检讨书
2014/02/15 职场文书
旅游管理专业大学生职业规划书
2014/02/27 职场文书
电子工程专业毕业生求职信
2014/03/14 职场文书
预防传染病方案
2014/06/14 职场文书
励志广播稿300字(5篇)
2014/09/15 职场文书
毕业设计致谢语
2015/05/14 职场文书
校运会班级霸气口号
2015/12/24 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
一小时学会TensorFlow2之基本操作2实例代码
2021/09/04 Python
Python内置包对JSON文件数据进行编码和解码
2022/04/12 Python
Java死锁的排查
2022/05/11 Java/Android