最近我学到了关于显式块
的内容。
{
let foo = 'Hello';
someFunction(foo);
}
我仍然不太确定它的作用以及我们(开发者)如何从中受益。
- 您以前使用过吗?
- 您有使用案例吗?
感谢分享你的经验!
最近我学到了关于显式块
的内容。
{
let foo = 'Hello';
someFunction(foo);
}
我仍然不太确定它的作用以及我们(开发者)如何从中受益。
感谢分享你的经验!
自从 ES2015 开始,let
(以及 const
和 class
,在严格模式下还有函数声明)具有块级作用域,因此您可以使用独立的块来存储私有信息,并且通常可以更细粒度地控制变量的作用域,在我们以前使用 IIFE 的地方。
也就是说,这里有一些 ES5 及更早版本的代码,其中包含一个私有变量 x
:
(function() {
var x = Math.random();
console.log(x);
})();
// `x` doesn't exist here
x
仅被封装在 IIFE 中。
现在,使用 ES2015,我们可以不创建和调用函数来实现相同的效果:
{
let x = Math.random();
console.log(x);
}
// `x` doesn't exist here
function doSomething() {
let retainedInformation;
{
let something = /*...get some setup information...*/;
let anotherThing = /*...more setup information...*/;
let aThirdThing = /*...even more setup information...*/;
retainedInformation = /*...something figured out using the above...*/;
}
return function() {
// ...use `retainedInformation`...
};
}
const foo = function() {
let privateInfo = 42;
const foo = () => {
console.log(privateInfo++);
};
return foo;
}();
foo(); // 42
foo(); // 43
let foo;
{
let privateInfo = 42;
foo = () => {
console.log(privateInfo++);
};
}
foo(); // 42
foo(); // 43
虽然两种方法都可以使用。