【问题标题】: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 使这个技巧不再需要了。