javascript关闭实用用例

时间:2017-11-26 14:04:50

标签: javascript

我正在阅读关于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);

那么使用闭包的必要性(第一个例子)是什么?

1 个答案:

答案 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()