Javascript 自调用匿名函数中变量的生存期-函数闭包

Javascript 自调用匿名函数中变量的生存期-函数闭包,javascript,function,Javascript,Function,我在学习函数闭包 我不明白下面的代码。变量add是指返回匿名函数的自调用匿名函数。在这种情况下,变量计数器会发生什么情况?当我们调用函数add时,会发生什么 <!DOCTYPE html> <html> <body> <p>Counting with a local variable.</p> <button type="button" onclick="myFunction()">Count!</button&g

我在学习函数闭包

我不明白下面的代码。变量add是指返回匿名函数的自调用匿名函数。在这种情况下,变量计数器会发生什么情况?当我们调用函数add时,会发生什么

<!DOCTYPE html>
<html>
<body>

<p>Counting with a local variable.</p>

<button type="button" onclick="myFunction()">Count!</button>

<p id="demo">0</p>

<script>
var add = (function () {
    var counter = 0;    })();
    return function () {return counter += 1;}


function myFunction(){
    document.getElementById("demo").innerHTML = add();
}
</script>

</body>
</html>

使用局部变量计数

计数

0

var add=(函数(){ 变量计数器=0;}(); 返回函数(){return counter+=1;} 函数myFunction(){ document.getElementById(“demo”).innerHTML=add(); }
此外,我不明白为什么下面的代码不工作

<!DOCTYPE html>
<html>
<body>

<p>Counting with a local variable.</p>

<button type="button" onclick="myFunction()">Count!</button>

<p id="demo">0</p>

<script>
var add = (function () {
    var counter = 0;
    return function () 
           {
             var semih=0;
             if(counter >5) 
             {
                 return function(){ semih += 5;  }
             }
             return counter += 1;}
           }
)();

function myFunction(){
    document.getElementById("demo").innerHTML = add();
}
</script>

</body>
</html>

使用局部变量计数

计数

0

var add=(函数(){ var计数器=0; 返回函数() { var-semih=0; 如果(计数器>5) { 返回函数(){semih+=5;} } 返回计数器+=1;} } )(); 函数myFunction(){ document.getElementById(“demo”).innerHTML=add(); }
在第一个示例中,计数器是一个全局变量,因为闭包中的计数器不在范围内。在第二个示例中,semih不应位于函数内部,因为innerHTML接受字符串。

在第一个示例中,计数器是一个全局变量,因为闭包中的计数器不在范围内。在第二种情况下,semih不应位于函数内部,因为innerHTML接受字符串