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 相关文章推荐
基于jquery的放大镜效果
May 30 Javascript
用jquery存取照片的具体实现方法
Jun 30 Javascript
Js实现网页键盘控制翻页的方法
Oct 30 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
Mar 09 Javascript
JS自定义选项卡函数及用法实例分析
Sep 02 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
Sep 04 Javascript
Vue实现双向绑定的方法
Dec 22 Javascript
JS实现点击下拉菜单把选择的内容同步到input输入框内的实例
Jan 23 Javascript
js提取中文拼音首字母的封装工具类
Mar 12 Javascript
Vue表单及表单绑定方法
Sep 04 Javascript
js实现抽奖的两种方法
Mar 19 Javascript
一篇文章告诉你如何实现Vue前端分页和后端分页
Feb 18 Vue.js
详解利用 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
Codeigniter实现多文件上传并创建多个缩略图
2014/06/12 PHP
ThinkPHP CURD方法之field方法详解
2014/06/18 PHP
PHP日期和时间函数的使用示例详解
2020/08/06 PHP
超级退弹代码
2008/07/07 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
JavaScript中的eval()函数详解
2013/08/22 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
jquery实现弹出层效果实例
2015/05/19 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
强大Vue.js组件浅析
2016/09/12 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
2016/11/17 Javascript
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
2016/11/21 NodeJs
AngularJS指令与控制器之间的交互功能示例
2016/12/14 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
在pyqt5中QLineEdit里面的内容回车发送的实例
2019/06/21 Python
Python Pandas数据结构简单介绍
2019/07/03 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
Python BeautifulReport可视化报告代码实例
2020/04/13 Python
python针对Oracle常见查询操作实例分析
2020/04/30 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
英国骑行、跑步、游泳、铁人三项运动装备专卖店:Wiggle
2016/08/23 全球购物
英国最大的自有市场,比亚马逊便宜:Flubit
2019/03/19 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
抽象方法、抽象类怎样声明
2014/10/25 面试题
史上最全面的Java面试题汇总!
2015/02/03 面试题
Servlet方面面试题
2016/09/28 面试题
基于Python 函数和方法的区别说明
2021/03/24 Python
庆祝国庆节演讲稿2014
2014/09/19 职场文书
工作失误检讨书
2015/01/26 职场文书
毕业实习单位意见
2015/06/04 职场文书
关于CSS浮动与取消浮动的问题
2021/06/28 HTML / CSS