前端面试纪实(四):如何判断一个变量是数组:typeof和instanceof
来源:互联网 发布:mac可以玩跑跑卡丁车吗 编辑:程序博客网 时间:2024/05/20 01:47
1 typeof
这也是面试官问我的一个问题
我的第一反应是typeof
。但是正中对方下怀。
> typeof []'object'
这样返回的是object
这是一个JS很怪异的地方。为什么很怪异的呢,因为小白往往以{}和[]区分Array和Object
但是如果你看JS的Object
官方文档,typeof这样的行为或许有点道理
All objects in JavaScript are descended from Object; all objects inherit methods and properties from Object.prototype
一切对象都继承了Object的属性和方法。
但是typeof还是很复杂的。typeof的文档是这么描述:
对于,基本类型Undefined,Boolean,Number,String这些基本类型及其基本包装类型,typeof的行为是正常的。
值得关注的是Null:
typeof null === 'object';
文档的解释是这样的:
In the first implementation of JavaScript, JavaScript values were represented as a type tag and a value. The type tag for objects was 0. null was represented as the NULL pointer (0x00 in most platforms). Consequently, null had 0 as type tag, hence the bogus typeof return value. (reference)
大意是:null代表一个空指针,和对象有相同的type tag:0, 这造成了typeof奇怪的返回值。
typeof Symbol是ES6推出的新的数据类型,返回值是symbol
。
typeof函数对象的返回值是function
typeof宿主对象(依赖于JS环境的对象)的返回值的独立的,并不意味着不返回object
typeof其他对象的返回值是object
,包括但不限于Array, Date, RegExp
那么应该用什么呢?
2 instanceof
第一种方法是:instanceof
> [] instanceof Arraytrue
这是es3的规定,但是这必须假定只有一个全局执行环境
第二种方法是:isArray
这是es5的标准,被IE9+支持
> Array.isArray([])true
- 前端面试纪实(四):如何判断一个变量是数组:typeof和instanceof
- typeof和instanceof的区别以及如何判断一个数组
- typeof + instanceof+toString+constructor是如何判断javascript数据类型的
- JavaScript 中 typeof 和 instanceof 的区别及如何判断数组
- 判断数据类型:typeof和instanceof
- instanceof和typeof都能用来判断一个变量是否为空或是什么类型的变量。
- 判断变量的类型(typeof、instanceof、Object.prototype.toString)
- 如何判断一个变量是数组Array类型
- 前端面试纪实(三):ES6的const和let
- JS如何判断空对象,及typeof和instanceof的区别
- 判断对象是否是数组instanceof和isArray
- instanceof与typeof(写一个方法判断数据类型),prototype与_proto_
- js中的typeof和instanceof的用法和区别(附类型判断方法)
- JS类型检测(typeof和instanceof)
- Javascript typeof 和instanceof
- typeof 和 instanceof
- typeof和instanceof用法
- typeof和instanceof区别
- Python爬内蒙古大学教务处并自动计算绩点(小窗体版)
- Linux下通过yum安装软件
- 链表与顺序表的区别
- deepin安装jetbrain系列破解+究竟装到哪里了
- Java 浮点数 float和double类型的表示范围和精度
- 前端面试纪实(四):如何判断一个变量是数组:typeof和instanceof
- POJ 3279 Fliptile(普通搜索)
- 共享内存结构体数据(结构体不能使用指针)
- HDU 6071 Lazy Running
- JSON嵌套的对象类型
- 蚂蚁分类信息系统5.8多城市版本 解决后台管理员更新信息时置顶时间同时变化的问题
- qcy教你下载你在CSDN上写过的文章——第三篇……
- Java基础知识的回顾之数据类型
- BigData-secondDay