VOID 0

作者: 787518d9b65a | 来源:发表于2018-06-07 22:16 被阅读0次

    void 0

    void 关键字,该void 运算符能对给定的表达式进行求值,然后返回 undefined。

    void()仅仅是代表不返回任何值,但是括号内的表达式还是要运行,例如下面代码

    void(console.log("Wornning!"))
    

    在使用立即执行的函数表达式时,可以利用 void 运算符让 JavaScript 引擎把一个function关键字识别成函数表达式而不是函数声明(语句)。

    void function iife() {
        var bar = function () {};
        var baz = function () {};
        var foo = function () {
            bar();
            baz();
         };
        var biz = function () {};
    
        foo();
        biz();
    }();
    

    JavaScript URIs中,用户在点击一个以 javascript: URI 时,它会评估URI中的代码,然后用返回的值替换页面内容,除非返回的值是undefined。

    <a href="javascript:void(0);">点我没有反应的!</a


    void可用于返回undefined。underscore 源码没有出现 undefined,而用 void 0 代替。

    因为undefined是全局对象的一个属性。也就是说,它是全局作用域的一个变量。undefined的最初值就是原始数据类型undefined。

    在现代浏览器(JavaScript 1.8.5/Firefox 4+),自ECMAscript5标准以来undefined是一个不能被配置(non-configurable),不能被重写(non-writable)的属性。

    但是事实并非如此,undefined有可能在非全局作用域中被当作标识符(变量名)来使用(因为undefined不是一个保留字)。

    (function() {
    var undefined = 'foo';
    console.log(undefined, typeof undefined)
    })()//chrome -- foo string
    (function(undefined) {
    console.log(undefined, typeof undefined)
    })('foo')//chrome -- foo string
    

    所以用void 0替代undefined,更重要的是它不能被重写。

    在ES5下,void 0替代undefined能够省字节大小,对压缩代码很有帮助。

    相关文章

      网友评论

          本文标题:VOID 0

          本文链接:https://www.haomeiwen.com/subject/unbnsftx.html