であるあなたの外側のループで反復ごとに値をインクリメントして#
を記録しますスニペットです:
for (index1 = 1; index1 < 8; index1++) {
var op = '#';
for (index2 = index1; index2 - 1; index2--) {
op = op + '#';
}
console.log(op);
}
は、理由を説明するには、それで、最初に、あなたのループを解剖しましょう:
for (index1 = 1; index1 < 8; index1++) {
var op = '#';
. . .
この部分では、変数op
を値#
で作成しました。 7回反復すると、デフォルト値#
に再インスタンス化されます。
しかし、なぜその変数は繰り返しごとにインクリメントされますか?のは、内部ループに移りましょう:この内側のループ内の各反復に対して
for (index2 = index1; index2 - 1; index2--) {
op = op + '#';
}
、あなたがop
のデフォルト値に追加#
を追加しています。とにかく
、のは、内側のループが外側のループの各反復のために作っているどのように多くの反復を見てみましょう:
var x = 0;
for (index1 = 1; index1 < 8; index1++) {
//var op = '#';
for (index2 = index1; index2 - 1; index2--) {
//op = op + '#';
x++;
}
console.log(x);
x = 0;
//console.log(op);
}
あなたが見ることができるように、それはそれぞれの外側のループのために0, 1, 2, 3, 4, 5, 6
反復を作っています繰り返し。つまり、最初の反復では、#
が追加されず、2番目には#
が追加されます。つまり、コード上の結果を正当化します。
#
##
###
####
#####
######
#######
サイドノート:奇妙な何かに気づきましたか?正直なところ、私はこのループが非常に奇妙であることがわかります。しかし、私が正しいとすれば、それは0が偽であり、ループの第2のパラメータである反復を実行しないためです。私の推測が正しい場合は、コメントを追加してください。
とにかく、質問として投稿する必要があります。私はquestionからの回答を得ると、この回答を更新します。
EDIT:申し訳ありませんが、console.log(x)
では7回の反復しかありませんでした。ループ状態の奇妙さについては、私の推測は正しいです。 index2 - 1
は、index2 - 1 != 0
以上、正確には!!(index2 - 1)
と表記することもできます。 !!
は何かをブール値に変換します。どれfalsey値はfalseになります:0
、null
、''
(空の文字列)、undefined
、NaN
、およびfalse
。あなたの質問(くそ、私はほとんど奇妙なループのだって忘れてしまった)については
、バックのコードに行くことができます:
for (index1 = 1; index1 < 8; index1++) {
var op = '#';
for (index2 = index1; index2 - 1; index2--) {
op = op + '#';
}
//console.log(op);
}
//let's see if the variable resides outside the outer loop
console.log(op);
多田!まだログは#######
です。これは、クリステ氏が言ったような可変ホイストのためです。
外ループforループは1から7まで繰り返され、出力は7ログになります。 –
oh weird ..私は彼らが9人だと思いました。私はクロムデバッガでコードを試しました(私は簡単にインターネット接続を失った* coz)とそれは8回記録 –