Adakah anda fikir saya adalah pembolehubah global? Memandangkan i ialah pembolehubah tempatan, apakah hubungan antara i dalam f1 dan i dalam f2?
Mengapa ia adalah 0, 1 bukannya 1, 2. Itu kerana i++ sebenarnya i = i + 1; console.log(i++), i dicetak dahulu, dan kemudian i = i + 1 dilaksanakan ; Jika anda menukarnya kepada console.log(++i); maka ia akan menjadi 1 atau 2.
Apabila f1 dilaksanakan buat kali pertama, 0 adalah output Kerana ia adalah i++, i adalah output dahulu dan kemudian ditambah Apabila dilaksanakan semula, i adalah 1 pada masa ini. Apabila f2 dilaksanakan, kerana i ialah 0, 0 ialah output. Maksudnya, skop f1 dan f2 adalah berbeza, jadi rujukan i juga berbeza.
0 ialah console.log akan dilaksanakan terlebih dahulu dan kemudian i akan dinaikkan, bagaimanapun, i dalam f1 dan f2 tidak disambungkan, dan kerana penutupan, melaksanakan f1 sekali lagi akan mendapat 1.
Adakah anda fikir saya adalah pembolehubah global?
Memandangkan i ialah pembolehubah tempatan, apakah hubungan antara i dalam f1 dan i dalam f2?
Mengapa ia adalah 0, 1 bukannya 1, 2.
Itu kerana i++ sebenarnya i = i + 1;
console.log(i++), i dicetak dahulu, dan kemudian i = i + 1 dilaksanakan ;
Jika anda menukarnya kepada console.log(++i); maka ia akan menjadi 1 atau 2.
Ini adalah perbezaan antara i++ dan ++i, i++ dipetik dahulu dan kemudian dinaikkan, ++i mula-mula dinaikkan dan kemudian dipetik
Apabila f1 dilaksanakan buat kali pertama, 0 adalah output Kerana ia adalah i++, i adalah output dahulu dan kemudian ditambah Apabila dilaksanakan semula, i adalah 1 pada masa ini. Apabila f2 dilaksanakan, kerana i ialah 0, 0 ialah output. Maksudnya, skop f1 dan f2 adalah berbeza, jadi rujukan i juga berbeza.
f1() ialah pelaksanaan
Dan i ialah pembolehubah dalaman f1 Selepas ++, ia secara semula jadi akan mengeluarkan 0, 1
Anda boleh memahaminya dengan hanya menambah satu baris pada kod anda
Consol.log yang baru ditambah hanya akan dilaksanakan apabila var f1 = foo() dan f1() tidak akan dilaksanakan
i++
ialah aritmetik dahulu dan kemudian tambah dan tolak, jadi ia mengeluarkan 0 dahulu dan kemudian bertukar kepada 1Kerana ++ ialah pengendali tambah sendiri selepas operasi. saya akan dinaikkan selepas melengkapkan arahan ini.
Sebab untuk
0 ialah console.log akan dilaksanakan terlebih dahulu dan kemudian i akan dinaikkan, bagaimanapun, i dalam f1 dan f2 tidak disambungkan, dan kerana penutupan, melaksanakan f1 sekali lagi akan mendapat 1.