- 函数内部声明的所有变量会被提升到函数最开始的地方,并且函数域会覆盖全局域
var a = 123;
function f() {
alert(a);
var a = 1;
alert(a);
}
等同于:
function f() {
var a ;
alert(a); // undefined
a = 1;
alert(a); // 1
- 即时函数
不会产生任何全局变量,无法重复运行(除非放到循环或其他函数中)
(function (name) {
alert('Hello ' + name + '!');
})('dude');
- 私有函数
确保独立性,只把必要的函数暴露
function outer(param) {
function inner(theinput) {
return theinput * 2;
}
return 'the result is ' + inner(param);
}
var outer = function (param) {
var inner = function (theinput) {
return theinput * 2;
};
return 'the result is ' + inner(param);
}
- 闭包
在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
https://zhuanlan.zhihu.com/p/22486908
网友评论