[英]Do I need to specify parameter in Javascript closure
<!DOCTYPE html>
<html>
<body>
<p>Changing a local variable.</p>
<p id="demo"></p>
<script>
var add = (function () { /* do I need to put x in this statement?
like "var add = (function(x) { " */
var counter = 0;
return function (x) {return counter+=x}
})()
add(10);
add(15);
alert(typeof(add));
document.getElementById("demo").innerHTML = add(20);
</script>
</body>
</html>
我知道在上面的示例中,將add分配給自調用函數的返回值。
自調用功能僅運行一次。 它將計數器設置為零(0),並返回函數表達式。
我的問題是為什么函數未定義為:
var add = (function(x) {
....
}()
因為您沒有傳遞任何參數:
// Receive the arguments...
// v
var add = (function(x) {
....
}()
//^
//That you pass in here.
該自調用函數返回另一個函數。 就是那個函數(返回的函數),它接受參數x
。
考慮使用匿名函數,例如創建函數的函數(在這種情況下)。 因此,您是否需要知道x
才能構成使用參數x
? 基本上沒有,因為您只需要在實際調用匿名函數內部創建的函數時才知道它。
您試圖創建一個自執行匿名函數,該函數返回設置為“ add”的函數的定義。 更好的方法(而不是造成混亂的方法)是這樣定義函數:
var add = function(x) {
//Do things
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.