JavaScript斐波那契函数末尾输出Undefined的解决方法
问题原因
末尾出现undefined的核心原因有两个:
- 你定义的箭头函数
f没有写显式的return返回值,JavaScript中无显式返回值的函数,默认返回值就是undefined - 你在调用函数的时候,外层套了一层
console.log(f()),这行代码会把函数执行后的返回值(也就是默认的undefined)打印出来,而函数内部的循环已经完成了斐波那契数值的打印,就会在序列最后多出来一行undefined。
另外你的代码里proximo变量没有做声明,非严格模式下会变成隐式全局变量,开启严格模式会直接抛错,属于隐性bug。
修复方法
根据你的需求二选一即可:
- 如果你只需要函数在执行时直接打印序列,直接去掉外层包裹
f()的console.log即可,同时补上proximo的变量声明:
const f = (numero = 6, n1 = 0, n2 = 1) => { for (let i = 1; i <= numero; i++) { console.log(n1); const proximo = n1 + n2; n1 = n2; n2 = proximo; } } console.log('Sequência de Fibonacci:'); f()
- 如果你希望函数返回完整的斐波那契序列供后续逻辑使用,就把函数改成返回序列数组的形式,去掉循环内的打印逻辑,最后返回数组给外层console打印:
const f = (numero = 6, n1 = 0, n2 = 1) => { const fibSequence = []; for (let i = 1; i <= numero; i++) { fibSequence.push(n1); const proximo = n1 + n2; n1 = n2; n2 = proximo; } return fibSequence; } console.log('Sequência de Fibonacci:'); console.log(f())
内容的提问来源于stack exchange,提问作者Pietro Bortolli
相关产品推荐
相关产品推荐

