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与函数式编程解释
Apr 27 Javascript
JS类定义原型方法的两种实现的区别评论很多
Sep 12 Javascript
javascript+css 网页每次加载不同样式的实现方法
Dec 27 Javascript
js操作ajax返回的json的注意问题!
Feb 23 Javascript
AngularJS自定义服务与fliter的混合使用
Nov 24 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
May 31 Javascript
JQuery实现table中tr上移下移的示例(超简单)
Jan 08 jQuery
javascript实现计算指定范围内的质数示例
Dec 29 Javascript
使用jQuery如何写一个含验证码的登录界面
May 13 jQuery
详解微信小程序之提高应用速度小技巧
Jan 07 Javascript
2019年度web前端面试题总结(主要为Vue面试题)
Jan 12 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
Aug 10 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扩展图文教程
2008/12/12 PHP
ThinkPHP php 框架学习笔记
2009/10/30 PHP
用Zend Encode编写开发PHP程序
2010/02/21 PHP
web目录下不应该存在多余的程序(安全考虑)
2012/05/09 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
2016/03/21 PHP
简单解决微信文章图片防盗链问题
2016/12/17 PHP
laravel5.2表单验证,并显示错误信息的实例
2019/09/29 PHP
javascript 有用的脚本函数
2009/05/07 Javascript
Exitjs获取DataView中图片文件名
2009/11/26 Javascript
jQuery事件绑定和委托实例
2014/11/25 Javascript
关于Javascript加载执行优化的研究报告
2014/12/16 Javascript
Highcharts入门之简介
2016/08/02 Javascript
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
2017/01/19 Javascript
基于javascript实现最简单选项卡切换
2017/02/01 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
详解webpack引用jquery(第三方模块)的三种办法
2019/08/21 jQuery
TypeScript之调用栈的实现
2019/12/31 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
python开启摄像头以及深度学习实现目标检测方法
2018/08/03 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
2019/10/24 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
Python如何读写二进制数组数据
2020/08/01 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
HTML5如何为形状图上颜色怎么绘制具有颜色和透明度的矩形
2014/06/23 HTML / CSS
会计自我鉴定范文
2013/10/06 职场文书
会计专业导师推荐信
2014/03/08 职场文书
新年主持词
2014/03/27 职场文书
幼儿教师师德演讲稿
2014/05/06 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书
CSS中实现动画效果-附案例
2022/02/28 HTML / CSS
python模拟浏览器 使用selenium进入好友QQ空间并留言
2022/04/12 Python