JavaScript - この JS の質問が理解できません
某草草
某草草 2017-05-19 10:44:12
0
9
654
リーリー
某草草
某草草

全員に返信(9)
给我你的怀抱

リーリー リーリー

いいねを押す +0
过去多啦不再A梦

私はグローバル変数だと思いますか?
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 になります。

いいねを押す +0
小葫芦

これは i++ と ++i の違いです。i++ は最初に引用符で囲まれてから増加し、++i は最初に引用符で囲まれてから引用されます

いいねを押す +0
PHPzhong

リーリー

いいねを押す +0
漂亮男人

初めてf1を実行すると0が出力されますが、i++なので最初にiが出力され、再度実行すると今度は1が出力されます。 f2を実行するとiが0なので0が出力されます。つまり、f1 と f2 のスコープが異なるため、i の参照も異なります。

いいねを押す +0
習慣沉默

f1() は実行です

リーリー

そして i は f1 の内部変数です ++ の後は当然 0, 1 を出力します

コードに1行追加するだけで理解できます

リーリー

新しく追加された console.log は、var f1 = foo() の場合にのみ実行され、f1() は実行されません

いいねを押す +0
大家讲道理

i++は最初に算術演算を行ってから加算と減算を行うため、最初に0を出力し、その後1に変化します

いいねを押す +0
阿神

++ は演算後の自己加算演算子であるためです。この指示が完了すると i が増加します。

いいねを押す +0
小葫芦

0 の理由は、console.log が最初に実行され、その後 i がインクリメントされるためです。ただし、f1 と f2 の i には関連がなく、クロージャのため、再度 f1 を実行すると 1 が得られます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート