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 相关文章推荐
对YUI扩展的Gird组件 Part-2
Mar 10 Javascript
利用谷歌地图API获取点与点的距离的js代码
Oct 11 Javascript
js函数中onmousedown和onclick的区别和联系探讨
May 19 Javascript
js简单实现交换Li的值
May 22 Javascript
JavaScript分秒倒计时器实现方法
Feb 02 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
Mar 23 Javascript
javascript中in运算符用法分析
Apr 28 Javascript
详解webpack异步加载业务模块
Jun 23 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
Oct 27 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
Jan 20 Javascript
对layui中表单元素的使用详解
Aug 15 Javascript
vue的全局变量和全局拦截请求器的示例代码
Sep 13 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
调频问题解答
2021/03/01 无线电
建立文件交换功能的脚本(一)
2006/10/09 PHP
php中看实例学正则表达式
2006/12/25 PHP
PHP setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
Yii2 rbac权限控制之rule教程详解
2016/06/23 PHP
一些javascript一些题目的解析
2010/12/25 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
2013/10/18 Javascript
使用js如何实现全选与全不选
2013/12/30 Javascript
原生js实现移动开发轮播图、相册滑动特效
2015/04/17 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
AngularJS动态绑定HTML的方法分析
2016/11/07 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
ztree实现权限横向显示功能
2017/05/20 Javascript
Vue.JS项目中5个经典Vuex插件
2017/11/28 Javascript
使用Vue CLI创建typescript项目的方法
2019/08/09 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
Python利用前序和中序遍历结果重建二叉树的方法
2016/04/27 Python
理解Python中的绝对路径和相对路径
2017/08/30 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
使用python编写监听端
2018/04/12 Python
python itchat给指定联系人发消息的方法
2019/06/11 Python
python重要函数eval多种用法解析
2020/01/14 Python
使用pytorch实现论文中的unet网络
2020/06/24 Python
零基础学Python之前需要学c语言吗
2020/07/21 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
2020/11/20 Python
英国床垫在线:Mattress Online
2016/12/07 全球购物
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
解释下面关于J2EE的名词
2013/11/15 面试题
医院工作检讨书范文
2014/02/10 职场文书
投资意向书
2014/07/30 职场文书
申报材料格式
2014/12/30 职场文书
邀请函的格式
2015/01/30 职场文书
贷款工资证明范本
2015/06/12 职场文书
工作经历证明范本
2015/06/15 职场文书