在函数中使用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语句使函数无法继续执行任何操作,但我不确定,这仍然是新的并且是自学的!
答案 0 :(得分:0)
您正确地说这是因为return语句退出了函数。
在python,java和许多其他语言中也是如此。
干杯!
答案 1 :(得分:0)
以下是每个不同功能的作用:
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结果,您将其手动记录到控制台。
答案 2 :(得分:0)
return
计算其参数(如果提供)并立即结束包含函数的执行。
console.log
评估其参数并打印它,继续执行从其调用的函数。
因此,在您使用return
的示例中,您处于limit
遍历的for循环中这一事实并不重要,因为您只会经历一次并且{{ 1}}来自return
。
将所有内容与另一个示例放在一起:
fizzBuzz
如果您随后调用function print_dog() {
console.log('dog');
return;
console.log('cat');
}
,则会看到输出print_dog()
,但不会看到输出dog
,因为cat
结束了{{ 1}},然后才能到达return
答案 3 :(得分:0)
是的,您正在考虑正确的路线。
函数中的return语句将返回一个值并停止进一步执行。其中Console.log()是产生副作用的函数,它将在控制台中打印提供给它的参数。
在函数中具有console.log()就像在函数中调用函数一样。