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的IE和火狐的兼容性注意事项
Mar 17 Javascript
jquery实现的Banner广告收缩效果代码
Sep 02 Javascript
写给小白的JavaScript引擎指南
Dec 04 Javascript
AngualrJS中的Directive制作一个菜单
Jan 26 Javascript
值得分享的bootstrap table实例
Sep 22 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
Oct 24 Javascript
实例解析jQuery工具函数
Dec 01 Javascript
Bootstrap Table使用整理(四)之工具栏
Jun 09 Javascript
JS实现调用本地摄像头功能示例
May 18 Javascript
原生JS与CSS实现软件卸载对话框功能
Dec 05 Javascript
基于Web Audio API实现音频可视化效果
Jun 12 Javascript
JavaScript实现筛选数组
Mar 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及Zend Engine的线程安全模型分析
2011/11/10 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
2017/03/13 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
2017/08/01 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
Jquery拖拽并简单保存的实现代码
2010/11/28 Javascript
myFocus slide3D v1.1.0 使用方法与下载
2011/01/12 Javascript
jQuery中Ajax的get、post等方法详解
2015/01/20 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
2015/09/04 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
图文详解JavaScript的原型对象及原型链
2016/08/02 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
2016/08/08 Javascript
Webpack实现按需打包Lodash的几种方法详解
2017/05/08 Javascript
React学习笔记之条件渲染(一)
2017/07/02 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
2017/07/24 Javascript
JavaScript中Object值合并方法详解
2017/12/22 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
Python实现去除代码前行号的方法
2015/03/10 Python
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
基于python的多进程共享变量正确打开方式
2018/04/28 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
python的命名规则知识点总结
2019/10/04 Python
python时间与Unix时间戳相互转换方法详解
2020/02/13 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
《维生素c的故事》教学反思
2014/02/18 职场文书
婚礼答谢宴主持词
2014/03/14 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
个人租房协议书样本
2014/10/01 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
继续教育个人总结
2015/03/03 职场文书
教师求职自荐信
2015/03/26 职场文书
2015年小学体育工作总结
2015/05/22 职场文书
营销策划分析:怎么策划才能更好销量产品?
2019/09/04 职场文书
python开发实时可视化仪表盘的示例
2021/05/07 Python
Linux系统下安装PHP7.3版本
2021/06/26 PHP
Go 中的空白标识符下划线
2022/03/25 Golang