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的Pager分页器实现代码
Jul 17 Javascript
javascript题目,重写函数让其无限相加
Feb 15 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
Mar 19 Javascript
jQuery实现调整表格单列顺序完整实例
Jun 20 Javascript
JavaScript中三个等号和两个等号你了解多少
Jul 04 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
Aug 10 Javascript
JS实现的贪吃蛇游戏完整实例
Jan 18 Javascript
详解element-ui级联菜单(城市三级联动菜单)和回显问题
Oct 02 Javascript
微信小程序如何实现在线客服功能
Oct 16 Javascript
vue 返回上一页,页面样式错乱的解决
Nov 14 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
Dec 17 Javascript
js中switch语句的学习笔记
Mar 25 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生成唯一ID之SnowFlake算法
2016/12/17 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
起点页面传值js,有空研究学习下
2010/01/25 Javascript
深入理解JavaScript系列(16) 闭包(Closures)
2012/04/12 Javascript
关于JavaScript的面向对象和继承有利新手学习
2013/01/11 Javascript
jquery 缓存问题的几个解决方法
2013/11/11 Javascript
node.js中的fs.utimes方法使用说明
2014/12/15 Javascript
javascript cookie基础应用之记录用户名的方法
2016/09/20 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
jQuery焦点图左右转换效果
2016/12/12 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
2017/10/21 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
JS实现移动端可折叠导航菜单(现代都市风)
2020/07/07 Javascript
JavaScript 绘制饼图的示例
2021/02/19 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
致Python初学者 Anaconda入门使用指南完整版
2018/04/05 Python
详解python的argpare和click模块小结
2019/03/31 Python
解决Python内层for循环如何break出外层的循环的问题
2019/06/24 Python
Python实现Restful API的例子
2019/08/31 Python
利用Python实现Excel的文件间的数据匹配功能
2020/06/16 Python
python os.rename实例用法详解
2020/12/06 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
高等教育学自荐书范文
2014/02/10 职场文书
审计班子对照检查材料
2014/08/27 职场文书
2014年医院个人工作总结
2014/12/09 职场文书
放假通知
2015/04/14 职场文书
小学语文的各类谚语(70首)
2019/08/15 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
JavaScript ES6的函数拓展
2022/01/18 Javascript
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python
Spring Security使用单点登录的权限功能
2022/04/03 Java/Android