一。代码块
{...}
光秃秃的
{â¦}
将变量分离为
局部范围
{
// do some job with local variables that should not be seen outside
let message = "Hello";
alert(message); // Hello
}
alert(message); // Error: message is not defined
const limit = 3;
let y = 0;
const getPoint = () => y++;
{
let x = 0;
while ((x = getPoint()) && x < limit) {
console.log(x);
}
}
console.log(x, 'x should be undefined here');
块外部(或另一个脚本内部)的代码看不到块内部的变量,因为块具有
自己的词汇环境。
(function {...})
你可以用所谓的
立即调用的函数表达式
生活
)用于此目的。
它们看起来像这样:
(function() {
let message = "Hello";
alert(message); // Hello
})();
对于您的情况:
const limit = 3;
let y = 0;
const getPoint = () => y++;
(function () {
let x = 0;
while ((x = getPoint()) && x < limit) {
console.log(x);
}
})();
console.log(x, 'x should be undefined here');
这里是
函数表达式
创建并立即调用。所以代码立即执行,并且有自己的私有变量。
这个
函数表达式
用括号包装
,因为当JavaScript遇到
“功能”
函数声明