リーリー リーリー
私はグローバル変数だと思いますか? i はローカル変数なので、f1 の i と f2 の i の関係は何ですか?
なぜ 1, 2 ではなく 0, 1 なのかというと、i++ は実際には i = i + 1;console.log(i++) なので、最初に i が出力され、次に i = i + 1 が実行されます。 console.log(++i); に変更すると 1 または 2 になります。
これは i++ と ++i の違いです。i++ は最初に引用符で囲まれてから増加し、++i は最初に引用符で囲まれてから引用されます
リーリー
初めてf1を実行すると0が出力されますが、i++なので最初にiが出力され、再度実行すると今度は1が出力されます。 f2を実行するとiが0なので0が出力されます。つまり、f1 と f2 のスコープが異なるため、i の参照も異なります。
f1() は実行です
そして i は f1 の内部変数です ++ の後は当然 0, 1 を出力します
コードに1行追加するだけで理解できます
新しく追加された console.log は、var f1 = foo() の場合にのみ実行され、f1() は実行されません
i++は最初に算術演算を行ってから加算と減算を行うため、最初に0を出力し、その後1に変化します
i++
++ は演算後の自己加算演算子であるためです。この指示が完了すると i が増加します。
0 の理由は、console.log が最初に実行され、その後 i がインクリメントされるためです。ただし、f1 と f2 の i には関連がなく、クロージャのため、再度 f1 を実行すると 1 が得られます。
リーリー リーリー
私はグローバル変数だと思いますか?
i はローカル変数なので、f1 の i と f2 の i の関係は何ですか?
なぜ 1, 2 ではなく 0, 1 なのかというと、
i++ は実際には i = i + 1;
console.log(i++) なので、最初に i が出力され、次に i = i + 1 が実行されます。
console.log(++i); に変更すると 1 または 2 になります。
これは i++ と ++i の違いです。i++ は最初に引用符で囲まれてから増加し、++i は最初に引用符で囲まれてから引用されます
リーリー
初めてf1を実行すると0が出力されますが、i++なので最初にiが出力され、再度実行すると今度は1が出力されます。 f2を実行するとiが0なので0が出力されます。つまり、f1 と f2 のスコープが異なるため、i の参照も異なります。
f1() は実行です
リーリーそして i は f1 の内部変数です ++ の後は当然 0, 1 を出力します
コードに1行追加するだけで理解できます
リーリー新しく追加された console.log は、var f1 = foo() の場合にのみ実行され、f1() は実行されません
i++
は最初に算術演算を行ってから加算と減算を行うため、最初に0を出力し、その後1に変化します++ は演算後の自己加算演算子であるためです。この指示が完了すると i が増加します。
0 の理由は、console.log が最初に実行され、その後 i がインクリメントされるためです。ただし、f1 と f2 の i には関連がなく、クロージャのため、再度 f1 を実行すると 1 が得られます。