为什么用void 0代替undefined

592 阅读1分钟

为什么不直接用undefined

  1. undefined不是一个保留字,是全局对象的一个属性,在低版本 IE 中能被重写;
    var undefined = 10;
    alert(undefined);
    // undefined -- chrome
    // 10 -- IE 8
  1. 在ES5中,undefined只是一个全局对象的 (只读)属性,不能被重写,但是在局部作用域中可以被重写;
   (function() {
        var undefined = 10;
        alert(undefined);
        // 10 
    })();

为什么是用void 0 代替

MDN 定义: The void operator evaluates the given expression and then returns undefined.

因为void运算符对任何表达式求值都是undefined,所以可以完美替换; 至于是void 0还是void 1都无所谓;