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 FormatNumber函数实现方法
Dec 30 Javascript
JavaScript 解析Json字符串的性能比较分析代码
Dec 16 Javascript
新鲜出炉的js tips提示效果
Apr 03 Javascript
window.location.href中url中数据量太大时的解决方法
Dec 23 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
Apr 25 Javascript
node.js中的fs.rmdirSync方法使用说明
Dec 16 Javascript
JavaScript中数组成员的添加、删除介绍
Dec 30 Javascript
学习JavaScript设计模式之中介者模式
Jan 14 Javascript
详解vue-cli之webpack3构建全面提速优化
Dec 25 Javascript
详解Angular中通过$location获取地址栏的参数
Aug 02 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
Aug 11 Javascript
详解js location.href和window.open的几种用法和区别
Dec 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
PHP实现多进程并行操作的详解(可做守护进程)
2013/06/18 PHP
解析将多维数组转换为支持curl提交的一维数组格式
2013/07/08 PHP
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
2014/06/21 Servers
destoon实现不同会员组公司名称显示不同的颜色的方法
2014/08/22 PHP
php使用cookie显示用户上次访问网站日期的方法
2015/01/26 PHP
日历查询的算法 如何计算某一天是星期几
2012/12/12 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
2012/12/17 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
jQuery 中国省市两级联动选择附图
2014/05/14 Javascript
利用js+css+html实现固定table的列头不动
2016/12/08 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
[00:31]DOTA2上海特级锦标赛 Fnatic战队宣传片
2016/03/04 DOTA
简洁的十分钟Python入门教程
2015/04/03 Python
Python实现购物车购物小程序
2018/04/18 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
TensorFLow 变量命名空间实例
2020/02/11 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
keras中的loss、optimizer、metrics用法
2020/06/15 Python
PyTorch安装与基本使用详解
2020/08/31 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
2020/10/15 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
2019年c语言经典面试题目
2016/08/17 面试题
JAVA中运算符的分类及举例
2015/09/12 面试题
汽修专业学生自我鉴定
2013/11/16 职场文书
全国爱牙日活动总结
2015/02/05 职场文书
出生证明格式
2015/06/15 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书
redis实现的四种常见限流策略
2021/06/18 Redis
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS
python3 字符串str和bytes相互转换
2022/03/23 Python