[英]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#的ref
和out
參數)。 最接近的方法是傳遞對對象的引用並修改對象的狀態(這實際上是完全不同的,在這里我不會贅述,因為它會使事情變得混亂:-))。
這些都與return
語句無關。
做您所描述的最簡單的方法是:
function One() {
var newVal = 0;
newVal = Too(newVal);
console.log(newVal);
}
function Too(arg) {
++arg;
return arg;
}
當我們調用One
時,會發生以下情況:
newVal
的局部變量。 0
。 Too
中。 沒有鏈接返回到newVal
變量。 Too
並在其arg
參數中接受該值(JavaScript中的參數實際上是局部變量)。 arg
的值也增加Too
。 Too
返回arg
保留的值的副本作為其返回值 。 Too
的返回值分配給變量newVal
。 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.