![](/img/trans.png)
[英]what is the difference between console.log and return in a Javascript function?
[英]What is the difference between return and console.log()
當我在函數中使用console.log()與使用return語句時,得到不同的輸出。
當我用return語句運行該函數時,我得到一個單詞輸出,它是以下之一:'fizz''buzz'或'fizzbuzz',但是當我使用console.log運行該函數時,輸出計數到極限並在遇到3、5或兩者的倍數時說“嘶嘶聲”,“嗡嗡聲”或“嘶嘶聲” /為什么會這樣?
input = fizzBuzz(100)
console.log(input)
function fizzBuzz(limit){
for (let i = 0; i <= limit; ++i)
if (i % 3 === 0 && i % 5 === 0)
console.log('fizzbuzz')
else if (i % 3 === 0)
console.log('fizz')
else if (i % 5 === 0)
console.log('buzz')
else console.log(i)
}
input = fizzBuzz(100)
console.log(input)
function fizzBuzz(limit){
for (let i = 0; i <= limit; ++i) {
if (i % 3 === 0 && i % 5 === 0)
return 'fizzbuzz'
else if (i % 3 === 0)
return 'fizz'
else if (i % 5 === 0)
return 'buzz'
else return i
}
}
我認為這是因為return語句使函數無法繼續執行任何操作,但是我不確定,這仍然是新的並且是自學的!
您正確地說這是因為return語句退出了該函數。
在python,java和許多其他語言中也是如此。
干杯!
這是每個不同功能的作用:
function fizzBuzz(limit) {
for (let i = 0; i <= limit; ++i)
if (i % 3 === 0 && i % 5 === 0)
console.log('fizzbuzz')
else if (i % 3 === 0)
console.log('fizz')
else if (i % 5 === 0)
console.log('buzz')
else console.log(i)
}
這會遍歷到limit
,並且console.log
每次都會顯示FizzBuzz測試結果。
function fizzBuzz(limit){
for (let i = 0; i <= limit; ++i) {
if (i % 3 === 0 && i % 5 === 0)
return 'fizzbuzz'
else if (i % 3 === 0)
return 'fizz'
else if (i % 5 === 0)
return 'buzz'
else return i
}
}
這會迭代到limit
,並從函數中返回一個值-第一次迭代時FizzBuzz測試的結果。
因此,從本質上講,一個函數將所有FizzBuzz結果記錄到控制台,而另一個函數則返回一個FizzBuzz結果,您要手動將其記錄到控制台。
return
計算其參數(如果提供)並立即結束包含函數的執行。
console.log
評估其參數並打印它,繼續執行從其調用的函數。
因此,在帶有return
的示例中,您處於進入limit
時間的for循環中這一事實並不重要,因為您只需經歷一次並從fizzBuzz
return
fizzBuzz
。
將其與另一個示例放在一起:
function print_dog() {
console.log('dog');
return;
console.log('cat');
}
如果您隨后調用print_dog()
,則會看到輸出dog
,但不會看到輸出cat
,因為return
在將print_dog
轉到console.log('cat');
之前執行結束console.log('cat');
是的,您正在考慮正確的路線。
函數中的return語句將返回一個值並停止進一步執行。 其中,Console.log()是產生副作用的函數,它將打印在控制台中提供給它的參數。
在函數內具有console.log()就像在函數內調用函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.