それは、ブラウザのコンソールがどのように動作するかだから、あなたが見ている動作です。
評価するコードごとに、値を返そうとします。簡単な表現のために簡単です - 2 + 2
はおそらく4
を返します。
複数のステートメントで構成されるコードの場合は、はるかに複雑でコンソールはスマートになります。コンソールの動作が標準化されていないという事実は、複雑さを増すものです。したがって、特定のブラウザでこの時点で観察されたことは、別のブラウザや別のブラウザでは保証されません。
はのはしかし何が起こっているかを見つけるためにしてみましょう:このコードブラウザ用
j = 0;
while (j < 3) {
j++;
}
をスマートにしようとすると、この場合はj++;
ある中で、最新見つかった式の値を出力します。ループ終了前の最後の反復ではj
の値だったので、2
を返します。後置インクリメントはそれを変更する前に現在の値を返すので、2
を返します。
我々は
j = 0;
while (j < 3) {
++j;
}
に変更した場合、出力は非常に同じ理由で、3になります。
j = 0;
while (j < 3) {
j++;
a = 42;
}
この希望出力42
:
今度は、何か別のことを試してみましょう。 a = 42
はこのコードの最新式です。このサンプルの
j = 0;
while (j < 3) {
j++;
var a = 42;
}
コンソールは、代入文を無視することを決定し、最新式に戻りますので、再度、2
を返します。
要約すると、この動作は標準化されておらず、ブラウザーは期待したものではなくても有用であり何かを出力しようとしています。だから私の助言は暗黙的なコンソール出力に頼ることではなく、結果を得たい場合にはconsole.log()
を明示的に使用することです。
これは完全なコードですか?あなたはある時点で2を返しているので、それは現れています。あなたのwhileループには、コンソールに出力するコンソール文はありません。 –
コード – virendrao
のconsole.log()ステートメントは、最後の式の値を返すコンソールです。その行動は非常に難しいので、現時点ではそれを考えないほうが良いです。 – zerkms