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


    目前运算最快的判断变量类型的方式。
    可以判断除了 null 或 undefined 类型。
    当检测 null 或 undefined 类型的 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,即表示该对象已经被清空,目前无效状态。
posted @ 2023-03-07 23:22  荣姐  阅读(157)  评论(0编辑  收藏  举报