Rumah >hujung hadapan web >tutorial js >Penggunaan var yang salah dalam javascript menyebabkan petua undefined_javascript
Dalam JavaScript, pembolehubah dibahagikan kepada pembolehubah tempatan dan pembolehubah global mengikut skop berbezanya Pembolehubah yang ditakrifkan secara langsung ialah pembolehubah global, dan pembolehubah global boleh diakses oleh semua skrip yang ditakrifkan dalam fungsi ialah pembolehubah tempatan sahaja Sah dalam fungsi.
Jika pembolehubah global dan pembolehubah tempatan menggunakan nama pembolehubah yang sama, pembolehubah tempatan akan menimpa pembolehubah global.
Kod contoh:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>js中全局变量与局部变量</title> </head> <body> <script type="text/javascript"> var a = "全局变量"; function test1() { var a = "局部变量"; alert(a); } function test2() { alert(a); var a = "局部变量"; alert(a); } function test3() { alert(a); a = "局部变量"; alert(a); } </script> <input type="button" value="test1" onclick="test1()"/> <input type="button" value="test2" onclick="test2()"/> <input type="button" value="test3" onclick="test3()"/> </body> </html>
Hasil operasi adalah seperti berikut:
Klik test1 untuk memaparkan pembolehubah setempat.
Klik test2, undefined pop up, dan kemudian local variable pop up
Klik test3 untuk memaparkan pembolehubah global, dan kemudian muncul pembolehubah setempat
Ini adalah perbezaan antara menggunakan var dan tidak menggunakannya:
Jika anda menggunakan var, maka program akan memaksa pembolehubah baharu untuk ditakrifkan.
Jika var tidak digunakan, Sistem akan terlebih dahulu mencari sama ada pembolehubah itu wujud dalam konteks semasa dan hanya akan mentakrifkan semula pembolehubah baharu jika ia tidak wujud.
Dalam ujian3, pembolehubah yang digunakan adalah semua pembolehubah global Kali pertama pembolehubah global dikeluarkan secara langsung, kali kedua digunakan selepas memberikan nilai secara langsung kepada pembolehubah global.
Dalam kedua-dua test1 dan test2, menggunakan var untuk mentakrifkan pembolehubah baharu dengan nama yang sama dalam fungsi akan menyebabkan pembolehubah dalam fungsi menimpa pembolehubah global. Jadi dalam test2: output pertama a ialah pembolehubah tempatan a yang telah ditimpa, tetapi tiada nilai awal diberikan, jadi hasil undefined akan muncul. Menggunakan pembolehubah dengan cara ini sebenarnya salah dan harus dielakkan.