问题:想要创建一个函数,它能够记住数据,但是不必是全局变量,并且不必对每个函数重新发送相同的数据。
解决方案:使用闭包
function greetingMaker(greeting){
function addName(name){
return greeting+ " " + name;
}
return addName;
}
//创建一个新的局部函数
var daytimeGreeting = greetingMaker("Good Day to you");
var nightGreeting = greetingMaker("Good Evening");
//如果是白天
console.log(daytimeGreeting("Marry"));
//如果是黑夜
console.log(nightGreeting("Dock"));
//输出
"Good Day to you Marry"
"Good Evening Dock"
闭包的优点:可以使内部函数访问外部函数的作用域
闭包的缺点:内存泄露