我正在阅读关于mdn site
的关闭在实际部分,他们提供了以下代码作为闭包的实际用例
function makeSizer(size) {
return function() {
document.body.style.fontSize = size + 'px';
};
}
如果有人向我解释什么是差异,我将不胜感激
之间
function makeSizer(size) {
return function() {
document.body.style.fontSize = size + 'px';
};
}
和
function makeSizer(size) {
document.body.style.fontSize = size + 'px';
}
两者都可以以相同的方式使用
var size12 = makeSizer(12);
var size14 = makeSizer(14);
var size16 = makeSizer(16);
那么使用闭包的必要性(第一个例子)是什么?
答案 0 :(得分:1)
makeSizer
返回一个函数时,函数的内容只能在被调用时运行。
查看代码段及其注释:
function makeSizer() { // returning a function
return function() {
console.log("sizerOne");
};
}
function makeSizer2() { // not returning a function
console.log("sizerTwo");
}
var output = makeSizer(); // storing the returned function in an output variable.
output(); // calling makeSizer's returned function. ie: makeSizer()();
makeSizer2(); // calling makeSizer2()