簡體   English   中英

javascript從外部調用內部函數

[英]javascript calling a inner function from outside

這是關於javascript閉包工作。 我在另一個內部有一個函數,我想在外部函數之外訪問它。 是否有可能因為它寫在這里你可以實現關閉http://www.w3schools.com/js/js_function_closures.asp JavaScript嵌套函數所有函數都可以訪問全局范圍。

實際上,在JavaScript中,所有函數都可以訪問“上面”的范圍。

JavaScript支持嵌套函數。 嵌套函數可以訪問它們“上方”的范圍。

在此示例中,內部函數plus()可以訪問父函數中的計數器變量:

function add() {
    var counter = 0;`enter code here`
    function plus() {counter += 1;}
    plus();    
    return counter; 
}

我正試圖從外面接受加號()

同意Grim。

但如果您想訪問外部的plus函數,可以嘗試這種方式:

function add(){
  var counter = {
      value: 0,
      plus: function(){
         return ++this.value;
      }
  };
  counter.plus();
  return counter; 
}

希望能幫助到你。

你不能。 內部函數僅在外部函數的主體內可用。

我假設你的目標是保持value作為私有屬性add並通過add.plus()調用提供操作:

//define your object with a private "value" and a public modifier "plus"
var add = (function() {
  var counter = 0;
  var that = {
    plus: function() {
      return counter++; //equal to your code
    }
  }
  //your integrated first call
  that.plus();
  return that;
})();

//make a call
add.plus();

演示 - 工作代碼示例。

這可能是您正在尋找的,特別是與您提供的教程鏈接相關。 這是朝着正確方向邁出的一步。

var plus;
add();
plus();
plus();
plus();
alert(plus());

function add() {
    var counter = 0;
    plus = (function(counter) {
        return function() {counter += 1;return counter;};
    })(counter);
    plus();
}

這是封閉的直接例子。 我添加了一個全局變量,但是add()可以返回plus的函數定義。 我將返回值從add()中移除並將其移動到plus(),因為當add()完成時,此代碼計數器將始終等於1。

但是,直接從您提到的教程中,實現他們正在嘗試的內容的最佳方法是使用此代碼直接從其網頁中刪除。

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

add();
add();
add(); // the counter is now 3

暫無
暫無

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

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