在任意代码片段外部添加包裹函数,可以将内部的变量和函数定义“隐藏”起来,如下
function foo(){
var a = 3;
console.log(a)
}
这种方式不理想,会foo函数会“污染”到全局作用域,而且需要foo()调用才会执行
更好的方案
(function foo(){
var a = 3;
console.log(a)
})()
优点:
- foo不属于全局作用域,是被绑定在函数表达式自身的函数,是在foo中可以调用
- 最后加’()’,会自执行一次
函数声明和函数表达式
最大的区别是名称标识符将会绑定在何处——如果function是声明中的第一个次,那就是函数声明,否则是函数表达式