簡體   English   中英

函數中的功能在nodejs中到底有什么作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM