ksh*_*iya 3 javascript ecmascript-6
将整个代码块包裹在两个大括号内有什么意义?例如在 .js 文件中:
{
const firstVar;
class firstClass {}
class secondClass {}
}
Run Code Online (Sandbox Code Playgroud)
这是为了创建块作用域并保持全局名称空间干净吗?例如,它是否可以与将整个 javascript 模块包装在自调用函数中相媲美?
例如,看一下这个 JS 文件;
https://github.com/codrops/PageFlipLayout/blob/master/js/demo.js
是的,它与创建 IIFE 以将变量与全局范围隔离的旧做法非常相似。
由于constandlet是块作用域,而不是词法(或函数)作用域,因此您不需要创建整个函数并调用它。只需将其包裹在块中就足够了。
{
const foo = 42;
console.log(foo); // 42
}
console.log(foo); // ReferenceError
Run Code Online (Sandbox Code Playgroud)
值得注意的是,这种做法仍然比 IIFE 更少使用(并且功能更弱),因为 IIFE 还可以保护您免受泄漏vars 和function声明的影响,而块则不能。尽管现在常见的用例是使用模块,但这会隐式防止将变量和对象泄漏到全局范围内。
只有let,const和class是块作用域的。
| 归档时间: |
|
| 查看次数: |
681 次 |
| 最近记录: |