当我简单地改变两个表达式的顺序时,为什么这个for循环不能工作?
Why doesn't this for loop work when I simple change two expression's order
对于下面的fibonacci函数,它按预期工作:
function fibonacci(n) {
var nums = []
var a = b = 1
for (let i = 0; i < n; i++) {
[a, b] = [b, a + b]
nums.push(a)
}
return nums
}
console.log(fibonacci(5));
// outputs: [1,2,3,5,8]
但是在我改变了两个语句的顺序之后,它不工作了:
function fibonacci(n) {
var nums = []
var a = b = 1
for (let i = 0; i < n; i++) {
nums.push(a)
[a, b] = [b, a + b]
}
return nums
}
console.log(fibonacci(5));
// outputs: [1,1,1,1,1]
怎么了?
这是因为您在行末遗漏了分号
nums.push(a)
所以它将这两行合并成:
nums.push(a)[a, b] = [b, a + b]
这不是对a
和b
变量重新赋值,它是索引一个数组。
你真的应该改掉省略分号的坏习惯。Javascript允许这样做,但是正如你在这个例子中看到的,它并不总是在你假设的地方推断出语句中断。
function fibonacci(n) {
var nums = [];
var a = b = 1;
for (let i = 0; i < n; i++) {
nums.push(a);
[a, b] = [b, a + b];
}
return nums;
}
console.log(fibonacci(5));
// outputs: [1,1,1,1,1]
相关文章:
- 为什么 for (null_object 中的 var i)进入循环体的次数超过零次
- 为什么“for.in”循环中的数字数组索引的类型被视为字符串
- 为什么 for(var i = 0; i < 600000000000; i++) {} 在 JavaScript 中运
- 为什么for.of不记录foo值
- 为什么“for-in”循环不会循环访问原型属性
- 为什么for循环修改行中未引用的附加变量(Javascript)
- 解释为什么for循环在JavaScript中会这样
- 为什么for(arguments中的var i)没有'不起作用
- 为什么 for 循环计数器在 javascript 中退出循环后不会被销毁
- 为什么for.in循环不遍历对象's原型
- 有人能解释为什么FOR和WHILE循环在Javascript中有不同的输出
- 为什么for()循环不起作用?
- 为什么for循环不能让我的愿望成真呢?
- 为什么for..in会优雅地失败,而for..of会抛出异常?
- 为什么for语句不起作用
- 为什么for循环不能反向工作
- 为什么for循环执行无限次
- Angularjs 为什么 for/loop 覆盖数组项
- 为什么for.in()循环不返回数组内部的对象
- 为什么"for (i=0;i==x;i++)"返回未定义