javascript - FOR 类型循环中的大括号,意外地改变了代码的结果

标签 javascript

我正在学习 JS。书中是使用 for 关键字而不是 while 编写代码的练习。 While 始终是“原始示例”。所有类型的示例都将使用循环。

这个例子会将 # 符号打印成三 Angular 形的行:

#
##
###
####
#####
######  
#######  
########  
#########  
##########

[code #1] 使用 while:

var line = "";
var counter = 0;
while (counter < 10) {
    line = line + "#";
    print(line);
    counter = counter + 1;
}

[code #2] 同样,使用 for:

var line = "";
for (var counter = 0; counter < 10; counter = counter + 1) {
  line = line + "#";
  print(line);
}

在这两种情况下都使用大括号。



在其他示例中,我将计算 2 的 10 次方。
[code #3] 通过 while:

var result = 1;
var counter = 0;
while (counter < 10) {
  result = result * 2;
  counter = counter + 1;
}
show(result);

[code #4] for 也一样:

var result = 1;
for (var counter = 0; counter < 10; counter = counter + 1)
  result = result * 2;
show(result);  


  • 为什么 [代码 #4] 中没有使用大括号,但没有大括号也能正常工作?

  • 当我不使用大括号时,为什么 [code #2] 只打印三 Angular 形的最后一行 (##########)?当我使用大括号时,它会根据需要打印整个三 Angular 形。

最佳答案

始终使用大括号。

当你不使用大括号时,JS 引擎会自动粘合 for 之后的下一个语句来补充它,因此 list #2 中的代码基本上变成了:

var line = "";
for (var counter = 0; counter < 10; counter = counter + 1) {
  line = line + "#";
}
print(line);

并且只打印最后一行。

ifelsewhile 也指定了相同的行为。

关于javascript - FOR 类型循环中的大括号,意外地改变了代码的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18300782/

相关文章:

javascript - "new"谷歌日历中的 MutationObserver

javascript - 使用 Web Audio API 获取音频标记/提示点

javascript - 无需ajax或iframe的回调(纯代码)

javascript - 无法解析时间字符串

php - 防止 div 重新加载

javascript - 如何将javascript应用于html文档中的多个元素?

javascript - 我的应用程序的打印预览中的 data-ng-hide 行为

javascript - 如何翻译 style.fontSize = html5 文档的值?

javascript - 为什么我总是无法通过 javascript 对复选框进行复选标记?

javascript - django TypedChoiceField - 不允许默认值 0