在第一个while-loop
示例中,您在每次迭代时将附加哈希 ( #
) 连接到line
字符串常量:
line = line + "#";
而在第二个for
循环中,您不会:
print(NumSym + "#");
在第二行中,您打印NumSym
(即''
) 的当前值,并在其中添加一个#
,因此它会打印出 10 #
。换句话说: 的值NumSym
永远不会改变。
顺便说一句:在 JS 中,普遍认为以大写字母开头的“事物”是对象构造函数,变量以小写字母开头。只是让你知道...
因为我注意到你在评论中问了几次这个问题:
语句是“1 或多个事物”的“行”代码:
var foo;//stmt declaring a variable, called foo (implicitly initialized to undefined)
var foo = 'bar';//stmt declares AND assigns a string constant to the variable
var foo, bar, x = 1;//statement, consisting of 4 expressions
表达式是语句中有意义的部分:
var result = 2*123;//where 2*123 is an expression, result = 2*123 is, too
while(result > 123)//while([expression])<-- an expression resolves in a value (true or false)
块在 JS 中有些模糊,基本上所有用 curly 包裹的代码都可以称为块,但这可能会让那些习惯于 C++ 等语言的人感到困惑,其中每个块都有自己的范围。
int x = 0;//global
int main()
{
int x = ::x;//function scope
for (int x=0;x<10;x++)
{//x == loop scope, ::x == global x
printf("In loop x: %d, outer x: %d\n",x, ::x);
::x = x%2 == 0 ? x : ::x;
}
if (x == 0)
{
printf("true\n");//will show up on the screen!
}
return x;
}
输出:
循环内 x:0,外部 x:0
循环内 x:1,外部 x:0
循环内 x:2,外部 x:0
循环内 x:3,外部 x:2
循环内 x:4,外部 x:2
循环内 x:5,外部 x:4
循环内 x:6,外部 x:4
循环内 x:7,外部 x:6
循环内 x:8,外部 x:6
循环内 x:9,外部 x:8
真的
在 JS 中情况并非如此,这就是为什么我将您的代码示例称为循环而不是块。仅仅是因为我觉得一个块应该屏蔽或阻止对在块本身之外声明的变量的操作。但我认为这更像是个人的事情。