簡體   English   中英

了解return語句。

[英]Understanding the return statement.

我看了很多例子,但仍然無法弄清楚return語句是如何工作的。

 function One() {
   var newVal = 0;
   Too();
   console.log(newVal);
 }

 function Too(newVal) {
   ++newVal; 
   return(newVal);
 }

此打印不應該在控制台上打印1嗎? 我真正想做的是讓函數TooVal每次調用都增加1。 但是我什至無法弄清楚如何使return語句起作用。 我應該提到我不想使用全局變量。 謝謝你的幫助。

此打印不應該在控制台上打印1嗎?

號的newVal里面Too不是newVal里面One 他們是完全分開的。

我真正想做的是讓函數TooVal每次調用都增加1。

不能,JavaScript沒有像其他語言一樣通過引用傳遞變量的任何機制(例如C#的refout參數)。 最接近的方法是傳遞對對象的引用並修改對象的狀態(這實際上是完全不同的,在這里我不會贅述,因為它會使事情變得混亂:-))。

這些都與return語句無關。

做您所描述的最簡單的方法是:

function One() {
    var newVal = 0;
    newVal = Too(newVal);
    console.log(newVal);
}

function Too(arg) {
    ++arg; 
    return arg;
}

當我們調用One時,會發生以下情況:

  1. 創建一個名為newVal的局部變量。
  2. 其值設置為0
  3. 的副本作為參數傳遞到函數Too中。 沒有鏈接返回到newVal變量。
  4. 也會調用Too並在其arg參數中接受該值(JavaScript中的參數實際上是局部變量)。
  5. arg的值也增​​加Too
  6. Too返回arg保留的值的副本作為其返回值
  7. Too的返回值分配給變量newVal
  8. 我們輸出該值(通過將其傳遞到console.log )。

不,不應該。 return語句確定當控制返回到調用環境時,函數調用的值在調用環境中將是什么。 由於您的調用環境不使用返回值,因此沒有凈效果。

這是您獲取價值的方法:

newVal = Too(newVal);

如果要創建一個用作計數器的函數,這樣每次調用它時都會得到一個新的數字,您可以執行以下操作:

var counter = function(initial) {
  var c = initial || 0;
  return function() {
    return c++;
  };
}(0);

這樣做是使用匿名函數為另一個函數設置一個持久環境,該環境在(立即)被調用時從外部函數返回。 然后可以調用返回的函數,以從其專用計數器(變量“ c”)返回新值:

var currentCount = counter();
alert(currentCount); // 0, the first time
currentCount = counter();
alert(currentCount); // 1, and so on

如果函數返回一個值,則需要在console.log調用該函數或捕獲返回的值。

function One() {
   var newVal = 0;

   console.log(Too(newVal));
 }

 function Too(newVal) {
   ++newVal; 
   return(newVal);
 }

暫無
暫無

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

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