美文网首页
JS中隐含全局变量与明确定义的全局变量的不同

JS中隐含全局变量与明确定义的全局变量的不同

作者: 贪恋冬天的幸福 | 来源:发表于2019-10-27 18:38 被阅读0次

    JS中隐含全局变量与明确定义的全局变量有细微的不同,不同之处在于能否使用delete操作符撤销变量。

    • 使用var创建的全局变量(这类变量在函数外部创建)不能删除。
    • 不使用var创建的隐含全局变量(尽管它是在函数内部创建)可以删除。
      这表明隐含全局变量严格来讲不是真正的变量,而是全局对象的属性。属性可以通过delete操作符删除,但变量不可以。
    // 定义三个全局变量
    let global_var = 1;
    global_novar = 2; 
    (function(){
      global_fromfunc = 3;
    }());
    
    // 企图删除
    delete global_var;
    delete global_novar;
    delete global_fromfunc;
    
    // 测试删除情况
    console.log(typeof global_var); //"number"类型
    console.log(typeof global_novar); //"undefined"类型
    console.log(typeof global_fromfunc); //"undefined"类型
    
    

    参考资料:《JavaScript 模式》 Stoyan Stefanov 著 陈新 译

    相关文章

      网友评论

          本文标题:JS中隐含全局变量与明确定义的全局变量的不同

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