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 相关文章推荐
Flash+XML滚动新闻代码 无图片 附源码下载
Nov 22 Javascript
JQuery下关于$.Ready()的分析
Dec 13 Javascript
IE6图片加载的一个BUG解决方法
Jul 13 Javascript
Jquery中删除元素的实现代码
Dec 29 Javascript
jQuery JSON实现无刷新三级联动实例探讨
May 28 Javascript
javascript中传统事件与现代事件
Jun 23 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
Nov 03 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
Apr 24 Javascript
微信小程序 本地数据读取实例
Apr 27 Javascript
Vue实现active点击切换方法
Mar 16 Javascript
Vue指令指令大全
Feb 09 Javascript
JavaScript实现随机点名器
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 冒泡排序 交换排序法
2011/05/10 PHP
php实现在多维数组中查找特定value的方法
2015/07/29 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
php 三元运算符实例详细介绍
2016/12/15 PHP
Laravel关系模型指定条件查询方法
2019/10/10 PHP
jQuery 判断页面元素是否存在的代码
2009/08/14 Javascript
javascript prototype原型操作笔记
2009/12/07 Javascript
推荐10个超棒的jQuery工具提示插件
2011/10/11 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
chrome下img加载对height()的影响示例探讨
2014/05/26 Javascript
JS+CSS实现仿新浪微博搜索框的方法
2015/02/24 Javascript
JS实现点击颜色块切换指定区域背景颜色的方法
2015/02/25 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
原生JS实现日历组件的示例代码
2017/09/22 Javascript
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
详解Vue结合后台的列表增删改案例
2018/08/21 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
Vue项目中如何使用Axios封装http请求详解
2019/10/23 Javascript
H5实现手机拍照和选择上传功能
2019/12/18 Javascript
微信小程序复选框实现多选一功能过程解析
2020/02/14 Javascript
[01:46]DOTA2上海特锦赛小组赛英文解说KotlGuy采访
2016/02/27 DOTA
[02:40]2018年度DOTA2最佳新人-完美盛典
2018/12/16 DOTA
Python的Bottle框架中获取制定cookie的教程
2015/04/24 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
Python判断telnet通不通的实例
2019/01/26 Python
PowerBI和Python关于数据分析的对比
2019/07/11 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
中国最大的团购网站:聚划算
2016/09/21 全球购物
奥地利手表、香水、化妆品和珠宝购物网站:Brasty.at
2021/01/17 全球购物
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
2013/04/07 面试题
JAVA程序设计笔试题面试题一套
2015/07/28 面试题
2014年开学第一课活动方案
2014/03/06 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
2015年综治维稳工作总结
2015/04/07 职场文书