最初のwhile-loop
例では、反復ごとに追加のハッシュ ( #
) をline
文字列定数に連結します。
line = line + "#";
一方、2 番目のループでは、次for
のことは行いません。
print(NumSym + "#");
2 行目では、現在の値NumSym
(つまり''
) を出力し、それにシングル#
を追加すると、 ten が出力されます#
。つまり、 の値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には当てはまりません。そのため、コード例をブロックではなくループと呼びます。ブロックは、ブロック自体の外部で宣言された変数の操作をシールドまたはブロックする必要があると私が感じているからです。でも、それはもっと個人的なことだと思います。