在JavaScript中关闭闭包的函数中声明另一个函数有什么意义?

4 javascript closures

我仍然在努力思考JavaScript中的闭包(为了记录,我已经在Stack Overflow上阅读了JavaScript闭包的答案,加上"用于傻瓜的JavaScript闭包",我仍然对它们感到困惑).

我的主要问题是我无法理解在函数中声明另一个函数的重要性; 我得到返回内部函数允许外部函数的局部变量保持活动,但在这个例子中是不是仍然如此?

function sayName(name) {
var say = "Hello, " + name;
alert(say);
}

var sayJohn = sayName("John");
Run Code Online (Sandbox Code Playgroud)

在我创建的sayJohn()函数中,局部变量"say"仍然在其局部范围之外被引用.那么这还不能创造一个闭包吗?

NB我为这一切听起来有多乱而道歉,对于学习JavaScript和编程一般都很新鲜,所以请放轻松我!

Hui*_*eng 6

你的例子确实无法表现出封闭的力量.看看这个:

function makeAdder(add1){
    return function(add2){
       return add1 + add2;
    };
}

// add10 is a function which increments the input by 10(that's the closure's magic)
var add10 = makeAdder(10);

add10(12); // returns 22
add10(9); // returns 19
Run Code Online (Sandbox Code Playgroud)