Salah faham penggunaan JavaScript
Dalam bab ini kita akan membincangkan salah faham dalam penggunaan JavaScript.
Ralat aplikasi pengendali tugasan
Dalam program JavaScript, jika anda menggunakan tanda sama (=) pengendali tugasan dalam pernyataan bersyarat if, hasil yang salah akan dihasilkan, betulkan Kaedahnya ialah menggunakan dua tanda yang sama bagi pengendali perbandingan (==).
jika Pernyataan bersyarat mengembalikan salah (yang kami jangkakan) kerana x tidak sama dengan 10:
Contoh
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> var x = 0; document.getElementById("demo").innerHTML = Boolean(x == 10); </script> </body> </html>
Jalankan contoh»
Klik butang "Jalankan contoh" untuk melihat contoh dalam talian
jika Kenyataan bersyarat mengembalikanbenar (bukan seperti yang kami jangkakan) kerana pernyataan bersyarat dilaksanakan dan x diberikan nilai 10, 10 adalah benar:
Instance
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> var x = 0; document.getElementById("demo").innerHTML = Boolean(x = 10); </script> </body> </html>
Jalankan Instance»
Klik butang "Run Instance" untuk melihat contoh dalam talian
jika Pernyataan bersyarat mengembalikan salah (bukan seperti yang kami jangkakan) Kerana pernyataan bersyarat dilaksanakan, x diberikan nilai 0 dan 0 adalah palsu:
Instance
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> var x = 0; document.getElementById("demo").innerHTML = Boolean(x = 0); </script> </body> </html>
Jalankan instance»
Klik butang" Run Instance" untuk melihat contoh dalam talian
赋值语句返回变量的值。 |
Ralat biasa operator perbandingan
Dalam perbandingan biasa, jenis data diabaikan yang berikut jika pernyataan bersyarat kembali benar:
Contoh
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> var x = 10; var y = "10"; document.getElementById("demo").innerHTML = Boolean(x == y); </script> </body> </html><. 🎜>
Jalankan contoh»Klik butang "Jalankan contoh" untuk melihat contoh dalam talian
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> var x = 10; var y = "10"; document.getElementById("demo").innerHTML = Boolean(x === y); </script> </body> </html>
Jalankan instance» Klik butang "Jalankan Instance" untuk melihat contoh dalam talian
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> var x = 10; switch(x) { case 10: alert("Hello"); } </script> </body> </html>
Jalankan instance»Klik butang "Jalankan contoh" untuk melihat kejadian dalam talian
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> var x = 10; switch(x) { case "10": alert("Hello"); } </script> </body> </html>
Jalankan contoh»Klik butang "Jalankan contoh" untuk melihat contoh dalam talian
Nota tambahan dan sambungan
Tambahan ialah penambahan dua nombor.
Penggabungan ialah gabungan dua rentetan.
JavaScript menggunakan operator + untuk kedua-dua penambahan dan penggabungan. Seterusnya kita boleh melihat perbezaan antara menambah dua nombor dan menggabungkan nombor dan rentetan melalui contoh:<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> var x = 10 + "5"; document.getElementById("demo").innerHTML = x; </script> </body> </html>
Jalankan Instance»Klik butang "Run Instance" untuk melihat contoh dalam talian
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> var x = 10; var y = "5"; var z = x + y; document.getElementById("demo").innerHTML = z; </script> </body> </html>
Jalankan contoh»Klik butang "Jalankan contoh" untuk melihat contoh dalam talian
Nota tentang penggunaan data titik terapung NotaSemua data dalam JavaScript disimpan dalam 64-bit
data titik terapung (terapung).
Semua bahasa pengaturcaraan, termasuk JavaScript, mengalami kesukaran untuk menentukan ketepatan data titik terapung:<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> var x = 0.1; var y = 0.2; var z = x + y; document.getElementById("demo").innerHTML = z; </script> </body> </html>
Jalankan Contoh»Klik butang "Jalankan Contoh" untuk melihat contoh dalam talian
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> var x = 0.1; var y = 0.2; var z = (x * 10 + y *10) / 10; document.getElementById("demo").innerHTML = z; </script> </body> </html>
Cawangan rentetan JavaScript
JavaScript run kita berada dalam pernyataan pemisah baris digunakan dalam rentetan:
Instance
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = "Hello World!"; </script> </body> </html>
Run Instance»
Klik "Run Butang Instance" untuk melihat Contoh dalam talian
Walau bagaimanapun, menggunakan carriage return dan suapan talian terus dalam rentetan akan mengakibatkan ralat:
Contoh
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body>about:newtab <p id="demo"></p> <script> document.getElementById("demo").innerHTML = "Hello World!"; </script> </body> </html>
Jalankan Instance»
Klik butang "Run Instance" untuk melihat contoh dalam talian
Kita boleh memilih alat pembangunan atau tekan F12 untuk lihat mesej ralat:
Pemutus baris rentetan memerlukan penggunaan serik ke belakang(), seperti ditunjukkan di bawah:
Penggunaan titik bertitik yang salah
Contoh
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> var x = 5; if (x == 19);{ document.getElementById("demo").innerHTML = "Hello"; } </script> </body> </html>
Jalankan instance»
Klik butang "Run instance" untuk melihat instance dalam talian
Dalam contoh berikut, disebabkan penggunaan koma bertitik yang salah , blok kod dalam pernyataan if tidak akan dilaksanakan:
Nota tentang penggunaan pernyataan Return
JavaScript secara automatik tamat pada baris terakhir kod secara lalai.
Dua contoh berikut mengembalikan hasil yang sama (satu dengan koma bertitik dan satu tanpa):
Contoh
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = myFunction(55); function myFunction(a) { var power = 10 return a * power } </script> </body> </html>
Jalankan Instance»
Klik butang "Run Instance" untuk melihat contoh dalam talian
Instance
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = myFunction(55); function myFunction(a) { var power = 10; return a * power; } </script> </body> </html>
Run Contoh »
Klik butang "Run Example" untuk melihat contoh dalam talian
JavaScript juga boleh menggunakan berbilang baris untuk menamatkan pernyataan. Butang " Jalankan Instance" untuk melihat contoh dalam talian
Walau bagaimanapun, hasil contoh berikut akan kembali:
Instance<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = myFunction(55); function myFunction(a) { var power = 10; return a * power; } </script> </body> </html>Jalankan contoh»
Klik butang "Jalankan contoh" untuk melihat contoh dalam talian
Kenapa ada keputusan sedemikian? Kerana dalam JavaScript, kod Contoh 4 adalah konsisten dengan kod berikut:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = myFunction(55); function myFunction(a) { var power = 10; return a * power; } </script> </body> </html>
Parse
Jika ia adalah pernyataan yang tidak lengkap, seperti berikut:
function myFunction(a) { var power = 10; return; // 分号结束,返回 undefined a * power; }
JavaScript akan Cuba membaca baris kedua pernyataan:
var
Tetapi oleh kerana pernyataan itu lengkap seperti ini:
power = 10;
JavaScript akan menutup pernyataan secara automatik:
return
Dalam JavaScript, pecahkan nombor adalah pilihan.
Memandangkan pemulangan ialah penyata yang lengkap, JavaScript akan menutup penyata pemulangan.
注意:不用对 return 语句进行断行。 |
Menggunakan nama untuk mengindeks ke dalam tatasusunan
Banyak bahasa pengaturcaraan membenarkan penggunaan nama sebagai indeks ke dalam tatasusunan.
Suatu tatasusunan yang menggunakan nama sebagai indeks dipanggil tatasusunan bersekutu (atau cincang).
JavaScript tidak menyokong penggunaan nama untuk mengindeks tatasusunan, hanya indeks angka dibenarkan.
Dalam JavaScript, objek menggunakan nama sebagai indeks.
Jika anda menggunakan nama sebagai indeks, JavaScript akan mentakrifkan semula tatasusunan sebagai objek standard apabila mengaksesnya.
Selepas melaksanakan operasi ini, kaedah dan sifat tatasusunan tidak lagi boleh digunakan, jika tidak, ralat akan berlaku:
Instance
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> var person = []; person[0] = "John"; person[1] = "Doe"; person[2] = 46; document.getElementById("demo").innerHTML = person[0] + " " + person.length; </script> </body> </html>
Jalankan Instance»
Klik butang "Run Instance" untuk melihat contoh dalam talian
Tentukan elemen tatasusunan dan anda tidak boleh menambah koma pada penghujung
Cara takrifan yang salah :
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p> 如果你使用名字作为索引,当访问数组时,JavaScript 会把数组重新定义为标准对象,数组的方法及属性将不能再使用,否则会产生错误:。 </p> <p id="demo"></p> <script> var person = []; person["firstName"] = "John"; person["lastName"] = "Doe"; person["age"] = 46; document.getElementById("demo").innerHTML = person[0] + " " + person.length; </script> </body> </html>
Cara takrifan yang betul:
points = [40, 100, 1, 5, 25, 10,];
Tentukan objek, dan anda tidak boleh menambah koma di hujungnya
Cara takrifan yang salah:
points = [40, 100, 1, 5, 25, 10];
Takrifan Betul:
websites = {site:"php中文网", url:"www.php.cn", like:460,}
Undefined bukan Null
dalam JavaScript, null digunakan untuk objek, undefined digunakan untuk pembolehubah, sifat dan kaedah.
Objek mungkin batal hanya jika ia ditakrifkan, jika tidak ia tidak ditentukan.
Jika kita ingin menguji sama ada objek itu wujud, ralat akan dilemparkan jika objek itu belum ditakrifkan lagi.
Penggunaan yang salah:
websites = {site:"php中文网", url:"www.php.cn", like:460}
Cara yang betul ialah kita perlu menggunakan typeof terlebih dahulu untuk mengesan sama ada objek ditakrifkan:
if (myObj !== null && typeof myObj !== "undefined")
Skop blok program
JavaScript tidak mencipta skop baharu dalam setiap blok kod Secara amnya, skop setiap blok kod adalah global.
Pembolehubah i dalam kod berikut mengembalikan 10 dan bukannya tidak ditentukan:
Instance
if (typeof myObj !== "undefined" && myObj !== null)
Jalankan instance»
Klik butang "Jalankan Instance" untuk melihat contoh dalam talian