[英]What does function in function do exactly in nodejs?
請參閱以下示例:
var tools1 = require('../tools/tools1');
var test_func = function(arg1, arg2, arg3) {
var local_var_1 = "lc1";
var local_var_2 = "lc2";
return function(data) {
var result = tools1.doSth(local_var_1);
result = result+local_var_2;
}
}
exports.test_func = test_func;
我不明白內部功能是做什么的!
在javascript中,當您返回函數時,它將返回該函數的引用,您以后可以調用它。
在您的代碼中,執行var result = test_func()
, result
將保存該函數的引用。 然后,您可以調用返回的函數,例如result(data)
。
一個基本的例子:
function sum(x, y) { var rs = x+y; return function(message) { console.log(message + rs); //rs holds its value because of clousers } } var result = sum(2, 3); result("This is result: ");
局部使用的變量,但由於閉包而在封閉范圍內定義,如上述示例中的
rs
函數內部的函數概念在JavaScript中稱為閉包。 它們是自調用的,並可以具有函數的私有變量。 我代表的是您在W3schools.com上找到的類似代碼。
var add = (function () {
var counter = 0;
return function () {return counter += 1;}
})();
add();
add();
add();
最初,計數器設置為0,然后返回函數引用。 該計數器受匿名函數范圍的保護,只能使用add()函數進行更改。 然后將計數器設置為3,因為add()函數被調用了3次。
以非常相似的方式,我猜您的代碼正在運行:
var test_func = function(arg1, arg2, arg3) {
var local_var_1 = "lc1";
var local_var_2 = "lc2";
return function(data) {
var result = tools1.doSth(local_var_1);
result = result+local_var_2;
}
}
將local_var_1和local_var_2設置為“ lc1”和“ lc2”並返回函數引用,然后內部函數來並對local_var_1上的tools1.doSth()進行一些操作,並將結果附加到local_var_2上。
注意:我不清楚您的代碼輸出,因此我嘗試在另一個代碼的幫助下告訴您這些步驟。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.