3 回答

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
默認(rèn)情況下,函數(shù)返回值undefined。如果您希望函數(shù)返回某個(gè)其他值,則需要有一個(gè) return 語句。
您還可以使用 return 語句根據(jù)某些邏輯停止函數(shù)的執(zhí)行,再次返回一個(gè)具有某種含義或只是未定義的值。
在 OP 的第一個(gè)示例中,函數(shù)被調(diào)用并且返回值不用于任何事情,因此返回值是什么并不重要,并且不需要 return 語句。
在另一種情況下,返回值可能很重要,例如一個(gè)生成 0 到 10 之間的整數(shù)隨機(jī)數(shù)的函數(shù):
function getRandomInteger(){
return Math.floor(Math.random() * 11);
}
function showRandomNumber() {
document.getElementById('s0').textContent = getRandomInteger();
}
<button onclick="showRandomNumber()">Show random number</button>
<span id="s0"></span>
上面的getRandomInteger函數(shù)需要返回一個(gè)特定的值,所以使用了return語句。該showRandomNumber功能只是顯示隨機(jī)數(shù),所以它并不需要一個(gè)return語句作為調(diào)用者(按鈕上的監(jiān)聽器)不關(guān)心的返回值是什么。

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊
您的情況 a 的技巧是函數(shù)的范圍。在這兩種情況下,變量 sum 都是在全局范圍內(nèi)定義的。當(dāng)您調(diào)用該函數(shù)時(shí),它會(huì)經(jīng)歷以下步驟:
查看當(dāng)前步驟中是否定義了 var sum 既然它沒有在函數(shù)內(nèi)部定義,那么走一步看一下外部作用域。是的,這里定義了,開始使用吧。
進(jìn)行計(jì)算。您正在使用增量運(yùn)算符,
sum += 5
因此實(shí)際上它可以寫為sum = sum + 5
. 如果您查看第二種情況,您會(huì)注意到變量現(xiàn)在增加了值。而且由于該變量是從全局范圍中獲取的,因此您的函數(shù)只會(huì)對(duì)其進(jìn)行變異。 注意:此時(shí)無論您是否從函數(shù)中返回某些內(nèi)容。你的函數(shù)只是改變了外部變量。最后一步——退出函數(shù)。正如我之前所說,只有當(dāng)您想直接使用函數(shù)調(diào)用的結(jié)果時(shí),返回值才重要,例如:
var result = myFunction()

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
這是您的示例發(fā)生的情況:
var sum = 5; //Sets the sum to =5
function myFunction() {
return sum += 5; // += reassigns the global (sum) to 10
}
myFunction();
console.log(sum);
一個(gè)更好的例子是這樣的:
sum = 5;
function myFunction() {
var sumOther = sum + 5;
return sumOther;
}
console.log(“sum:” + sum); // 5
console.log(“myFunction:” + myFunction()); // 10
這就是你如何獲得函數(shù)的運(yùn)行而不是全局變量“sum”
添加回答
舉報(bào)