为什么有的编程规范要求用 void 0 取代 undefined?

内容分享1个月前发布
0 0 0

Undefined 类型表明未定义,它的类型只有一个值,就是 undefined。任何变量在赋值前是 Undefined 类型、值为 undefined,一般我们可以用全局变量 undefined(就是名为 undefined 的这个变量)来表达这个值,或者 void 运算来把任意一个表达式变成 undefined 值。

但是呢,由于 JavaScript 的代码 undefined 是一个变量,而并非是一个关键字,这是 JavaScript 语言公认的设计失误之一,所以,我们为了避免无意中被篡改,我提议使用 void 0 来获取 undefined 值。

Undefined 跟 Null 有必定的表意差别,Null 表明的是:“定义了但是为空”。所以,在实际编程时,我们一般不会把变量赋值为 undefined,这样可以保证所有值为 undefined 的变量,都是从未赋值的自然状态。

Null 类型也只有一个值,就是 null,它的语义表明空值,与 undefined 不同,null 是 JavaScript 关键字,所以在任何代码中,你都可以放心用 null 关键字来获取 null 值。

[重学前端](https://time.geekbang.org/column/article/78884)–引用winter老师重学前端

在代码里尝试了上面的结论 发现只有在子作用域可以被篡改 在全局作用域不能被篡改

    (function () {
      "use strict";
      function fn() {
        var a = {};
        var undefined = a; //在子作用域可以被篡改
        var b = undefined;
        console.log("undefined1:", undefined, a); //undefined1:{} {}
        return undefined;
      }
      console.log("fn:", fn()); //{}
    })();

    var undefined = 123; //在全局作用域篡改不会影响
    console.log("undefined2:", undefined); //undefined2: undefined
  

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...