最小暴露原则
应该最小限度地暴露必要内容,将其他内容”隐藏”起来。
IIFE 的特殊用途
重置 undefined(ES3 中 undefined 可以赋值)
(function IIFE(undefined) {
var a;
if (a === undefined) {
console.log("Undefined is safe here!");
}
})();
块作用域
try/catch的 catch 分句会创建块作用域let将变量绑定到所在的{}块中const创建块级常量
if (true) {
{
let i = 11;
var s = 11;
}
// console.log(i); // ReferenceError
console.log(s); // 11
}
块作用域有助于垃圾回收——闭包不会意外保留大对象。