选自《你不知道的JavaScript 上卷》
一、函数声明
js的函数声明与大部分脚本语言类似,其函数名称‘污染’了所在作用域。在下例中,函数foo注册在全局作用域。
function foo() {
console.log('foo');
}
二、函数表达式
js有种语法,可以直接执行一个函数,而不‘污染’所在作用域。在下例中,函数foo在全局不可见。
(function foo() {
console.log('foo');
})();
三、作用
js缺少命名空间和实现隐藏的直接支持,通过这个技巧,可以间接的将内部实现封装起来,只允许对外的公共接口被外界访问。这种方式目前在流行的库里面被广泛应用。包括了CommonJS规范等。