最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

js数据类型判断、unll和undefined

来源:博客园


(资料图)

1、js判断数据类型

  • typeof

    可以判断 undefined、string、number、Boolean、function。但不能判断 null,typeof null返回Object。也不能判断 Array,typeof 数组返回Object
  • instanceof

    用于测试构造函数的 prototype 属性是否出现在对象的原型链中。可以用它判断 Function、Array。但不要用它判断Object,因为数组/函数 instanceof Object为 true。
  • constructor

    目前运算最快的判断变量类型的方式。可以判断除了nullundefined类型。当检测nullundefined类型的constructor属性时会报错。
  • Object.prototype.toString.call()

Object.prototype.toString.call(null);  //  "[object Null]"Object.prototype.toString.call(undefined);  //  "[object Undefined]"Object.prototype.toString.call(false);  //  "[object Boolean]"Object.prototype.toString.call(123);  //  "[object Number]"Object.prototype.toString.call("abc");  //  "[object String]"Object.prototype.toString.call([]);  //  "[object Array]"Object.prototype.toString.call({});  //  "[object Object]"Object.prototype.toString.call(function(){});   //  "[object Function]"

PS:在ES5中的判断数组还可以用Array.isArray()。

2、null 和 undefined 的区别

  • undefined 希望表示一个变量最原始的状态,而非人为操作的结果 。
  • typeof 之所以会判定 null 为 Object 类型,是因为JavaScript 数据类型在底层都是以二进制的形式表示的,二进制的前三位为 0 会被 typeof 判断为对象类型,而 null 的二进制位恰好都是 0 ,因此,null 被误判断为 Object 类型。
  • null 希望表示 一个对象被人为的重置为空对象。
  • 当一个对象被赋值了null 以后,原来的对象在内存中就处于游离状态,GC 会择机回收该对象并释放内存。因此,如果需要释放某个对象,就将变量设置为 null,即表示该对象已经被清空,目前无效状态。

关键词: