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 相关文章推荐
让您的菜单不离网站
Oct 03 Javascript
javascript 闭包疑问
Dec 30 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
Jun 04 Javascript
javaScript实现浮点数转十六进制字符
Oct 29 Javascript
JQuery实现绚丽的横向下拉菜单
Dec 19 Javascript
Node.js中文件操作模块File System的详细介绍
Jan 05 Javascript
详解使用vue实现tab 切换操作
Jul 03 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
Sep 15 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
Jul 10 Javascript
vue 自动化路由实现代码
Sep 03 Javascript
过滤器vue.filters的使用方法实现
Sep 18 Javascript
webpack5 联邦模块介绍详解
Jul 08 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进行MySQL删除记录操作代码
2008/06/07 PHP
PHP机器学习库php-ml的简单测试和使用方法
2017/07/14 PHP
PHP的微信支付接口使用方法讲解
2019/03/08 PHP
PHP isset()及empty()用法区别详解
2020/08/29 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
使用js实现数据格式化
2014/12/03 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
Bootstrap和Java分页实例第一篇
2016/12/23 Javascript
JS实现的点击表头排序功能示例
2017/03/27 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
jQuery实现的弹幕效果完整实例
2017/09/06 jQuery
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
ES6知识点整理之模块化的应用详解
2019/04/15 Javascript
json数据格式常见操作示例
2019/06/13 Javascript
微信小程序事件流原理解析
2019/11/27 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
[04:13]2018国际邀请赛典藏宝瓶Ⅱ饰品一览
2018/07/21 DOTA
python处理csv数据的方法
2015/03/11 Python
python之super的使用小结
2018/08/13 Python
对Python中list的倒序索引和切片实例讲解
2018/11/15 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
django API 中接口的互相调用实例
2020/04/01 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
解决Python import .pyd 可能遇到路径的问题
2021/03/04 Python
幼师求职自荐信范文
2014/01/26 职场文书
职业生涯规划书范文
2014/03/10 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
大学军训自我鉴定大全
2014/09/18 职场文书
SQL Server中锁的用法
2022/05/20 SQL Server