let 关键字是否引入了 IIFE 的替代方案来确定作用域?
以下语法在 ES6 中有效吗?我打算创建一个带有括号的匿名 block 来限定私有(private)变量myPrivateVariable
。
let foo;
{
let myPrivateVariable = 'x';
foo = function(bar) {
return myPrivateVariable + bar;
};
}
//foo is now a function with access to a 'private' variable.
最佳答案
是的,您的代码运行良好并且达到了预期的效果:
"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 的全部意义在于模拟 block 作用域,因此,是的,let
使这个技巧不再必要。
关于javascript - ES6 中的 block 作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27471510/