簡體   English   中英

Javascript范圍:將外部函數中的變量傳遞給內部函數

[英]Javascript scope: passing a variable from an outer function to an inner function

我在outerFunction中定義變量“a”。 我想在我的innerFunction中使用它。 為什么這不起作用,在嵌套函數之間傳遞數據的最佳方法是什么?

var outerFunction = function () {
   var a = 5;
   innerFunction();
}


var innerFunction = function () {
   alert(a);
}

outerFunction();

您必須向內部函數添加參數並從外部函數向其傳遞值。

現場演示

var outerFunction = function () {
   var a = 5;
   innerFunction(a);
}


var innerFunction = function (a) {
   alert(a);
}

outerFunction();

innerFunction不是的內部函數outeFunction你只是從調用它outerFunction 內部功能應定義如下。

var outerFunction = function () {
   var a = 5;
   var innerFunction = function () {
    alert(a);
   }
   innerFunction();
}

在javascript函數中綁定到它們的上下文。 這意味着在outerFunction定義的變量outerFunction存在於那里而不存在於全局上下文中。 但是對於函數innerFunction此范圍不可用。 所以你無法訪問它。 如果你需要它,你應該innerFunction地將它作為參數傳遞給innerFunction

只是實際嵌套它們:

var outerFunction = function () {

    var innerFunction = function () {
        alert(a);
    }

    var a = 5;
    innerFunction();
}

outerFunction();

現在, innerFunction的范圍( alert具有訪問innerFunction )位於聲明aouterFunction的范圍內。

var定義變量的局部范圍。 如果您不打算傳遞變量,那么執行此操作,

var outerFunction = function () {
   a = 5;
   innerFunction();
}


var innerFunction = function () {
   alert(a);
}

outerFunction();

但干凈的方法是傳遞變量

innerFunction(a)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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