javascript - ES6 中的 block 作用域

标签 javascript ecmascript-6

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/

相关文章:

javascript - 高效使用回调函数的示例

javascript - 将匿名函数传递给 onPanResponderMove

javascript - 对空数组调用 .find() 会导致错误

javascript - 使用数字作为 Redux 操作名称

javascript - 如何使 Bootstrap 多个选项卡组共享相同的ID

JavaScript,检测鼠标光标何时不在任何元素上

javascript - 如何在网页中使用 ECMAScript6 模块

javascript - ES6 导入模块作为对象

javascript - 如何检查输入的值是 react js中的数字还是字符串?

javascript - 解构第一个数组项或如何强制 Mongoose 返回对象而不是单项数组