我最近在Marjin Haverbeke的书“Eloquent Javascript, Second Edition”中完成了一项挑战。
One had to create此控制台输出使用for循环:
#
##
###
####
#####
######
#######
The answer is this:
for (var i = '#'; i.length < 8; i += '#') {
console.log(i);
}
我想知道的是为什么第一行不是两个哈希('##'),因为循环的更新部分(i + ='#')将'#'添加到i(已经= '#'),因此意味着循环的第一次迭代肯定会输出'##'?
也许我需要一个关于这个循环如何运作的教训。
你真的, 仍然看似JS新手。
答案 0 :(得分:6)
for (init(); condition(); update()) {
body();
}
相当于
init();
while (condition()) {
body();
update();
}
因此,第一次i += '#'
运行仅在第一次console.log(i)
之后(当i
只是'#'
时)。
答案 1 :(得分:1)
@Callum你首先要检查循环是如何工作的。
如果你已经写过。
for (var i = '#'; i.length < 8; i += '#') {
console.log(i);
}
所以在这个循环中发生的是这个。
1)first var i ='#' initiallize
然后条件
2)i.length < 8
然后它执行语句
3)console.log(i);
4)then increment
i += '#'
然后从第2步到第4步
这就是for循环算法的工作原理
答案 2 :(得分:1)
it is just like post increment. The order of execution is:
--> initialisation
--> check condition
--> execute body
--> increment value
so first it would print the value then increment it.
答案 3 :(得分:0)
这会在第一行中显示##
:
for (var i = '#'; i += '#',i.length < 8; ) {
console.log(i);
}