【问题标题】:Block scoping in ES6ES6 中的块作用域
【发布时间】:2014-12-14 16:43:35
【问题描述】:

let 关键字是否引入了 IIFE 的替代方案来确定范围?

以下在 ES6 中是否有效?我打算用括号创建一个匿名块来限定私有变量myPrivateVariable。

let foo;

{
  let myPrivateVariable = 'x';

  foo = function(bar) {
    return myPrivateVariable + bar;
  };
}

//foo is now a function with access to a 'private' variable.

【问题讨论】:

    标签: javascript ecmascript-6


    【解决方案1】:

    是的,您的代码运行良好并且符合预期:

    "use strict";
    
    let foo;
    
    {
        let myPrivateVariable = 'x';
    
        foo = function(bar) {
            return myPrivateVariable + bar;
        };
    }
    
    console.log(foo('y')); // xy
    console.log(myPrivateVariable); // error
    

    使用节点 v0.11.12 测试,带有 --harmony 标志。

    IIFE 的全部意义在于模拟块作用域,所以,是的,let 使这个技巧不再需要了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-10
      • 1970-01-01
      • 2016-12-19
      • 2015-07-23
      • 2019-10-07
      相关资源
      最近更新 更多