Salah faham penggunaan JavaScript

Dalam bab ini kita akan membincangkan salah faham dalam penggunaan JavaScript.

Ganti rentetan

Kami sering menggunakan kaedah ganti rentetan untuk menggantikan aksara tertentu dalam rentetan Sintaksnya adalah seperti ini

string.replace(subStr/reg,replaceStr/function)

Parameter pertama ialah rentetan yang akan ditemui atau ungkapan biasa dan parameter kedua ialah Untuk menggantikan rentetan atau kaedah, kita boleh gunakan

"Saya Byron".replace("B","b") // Saya byron

Demerit adalah sama seperti yang kita fikirkan, tetapi

"Saya seorang pelajar, dan anda?".replace("n","N"); // Saya seorang pelajar, dan anda?

Tidak seperti yang kami jangkakan, 'n' kedua tidak diganti. Jika rentetan diluluskan sebagai hujah pertama kepada kaedah ganti rentetan, hanya padanan pertama akan diganti. Jika anda ingin menggantikan semua padanan, anda perlu memasukkan objek RegExp dan menentukan sifat globalnya.

"Saya seorang pelajar, dan anda?".replace(/n/g,"N"); // Saya seorang pelajar, dan anda?


jenis

Perkara yang paling salah faham tentang jenis ialah jenis Ia adalah operator, bukan fungsi, yang bermaksud kita tidak perlu menambah kurungan apabila menilai jenis pembolehubah, kita hanya boleh menggunakannya secara langsung

jenis 1; //numbertypeof(1); , tidak perlu melakukan Penulisan ini, tetapi betul, ia bersamaan dengan membalut pembolehubah atau pemalar

Nilai pulangan typeof ialah rentetan Dalam kebanyakan kes, hasil yang dikembalikan adalah sama seperti hasil jangkaan kami, tetapi terdapat beberapa perkara yang perlu diperhatikan 🎜>jenis 123; // nombor

jenis NaN //nombor

jenis "123" //rentetan

jenis palsu; //boolean

jenis tidak ditentukan ; //undefined

jenis nol //objek

typeof new Array(); //objek

typeof (new Array()); //Jika anda rasa ia tidak cukup jelas, anda boleh menggunakannya dengan cara ini, hasilnya adalah sama

typeof (function(){}); //function

typeof a; //undefined

123 ialah nombor Pulangan nombor

2. Walaupun NaN bermaksud ia bukan nombor, jenis tetap akan mengembalikan nombor

3 "123" menjadi rentetan, jadi rentetan

4

5 Jenis undefined adalah tidak ditentukan Pembolehubah jenis ini hanya boleh mempunyai satu nilai literal "undefined"

6 jangan letakkan harapan kami di dalamnya. Gunakan typeof untuk membantu kami menentukan null

7 Jika typeof menentukan bahawa ia adalah objek, ia hanya akan mengembalikan objek, dan tidak akan mengembalikan jenis Array dan Tarikh tertentu. .

9. Fungsi juga merupakan jenis objek. Tetapi typeof merawatnya secara berbeza dan mengembalikan fungsi ini untuk menentukan sama ada pembolehubah itu adalah fungsi

10 Pembolehubah tidak ditentukan juga mengembalikan tidak ditentukan


<. 🎜>jika dan ==

Dalam JavaScript, jika bukan sahaja menilai boolean untuk menentukan benar atau salah, 0, NaN, "", tidak ditentukan, batal, palsu akan semua dianggap palsu

jika (!palsu) {

          console.log(1);

    } ;

jika (!0) {

console.log(2);

};

jika (!"") {

console.log(3);

};

jika (!undefined) {

console.log(4);

};

jika (!null) {

console.log(5);

};

jika (!NaN) {

console.log(6); 🎜> };

123456 akan dicetak dalam konsolTetapi ini tidak bermakna nilai ini == palsu

0==salah; //benar

"0"==salah; = palsu //false

null==false //false

null==null //true

NaN==NaN //false

null==undefined //true

Ralat aplikasi operator tugasan

Dalam program JavaScript, jika anda menggunakan tanda sama (=) pengendali tugasan dalam pernyataan bersyarat, hasil yang salah akan dihasilkan operator perbandingan Dua tanda yang sama (==).

jika pernyataan bersyarat mengembalikan palsu (iaitu yang kami jangkakan) kerana x tidak sama dengan 10:

<!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>


Ralat biasa operator perbandingan

Dalam operasi perbandingan yang ketat, === ialah pengendali identiti dan menyemak nilai dan jenis ungkapan pada masa yang sama yang berikut jika pernyataan bersyarat mengembalikan palsu:

<!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>

Ralat jenis ini sering berlaku. dalam pernyataan suis. Pernyataan suis akan menggunakan pengendali identiti (===) untuk perbandingan

Contoh berikut tidak akan melaksanakan tetingkap timbul amaran kerana jenis yang tidak konsisten:

<!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>


Nota Penambahan pada Sambungan

Tambahan ialah penambahan dua nombor.

Penggabungan ialah penggabungan 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:

var x = 10 + 5 // Keputusan x ialah 15
var x = 10 + "5"; // Keputusan x ialah "105"



Nota tentang menggunakan data titik terapung

Semua data dalam JavaScript disimpan sebagai data titik terapung 64-bit (terapung).

Semua bahasa pengaturcaraan, termasuk JavaScript, mengalami kesukaran untuk menentukan ketepatan data titik terapung:

var x = 0.1;
var y = 0.2;
var z = x + y // Hasil bagi z ialah 0.3
jika (z == 0.3) // Kembalikan palsu


Nota tentang menggunakan pernyataan Return

JavaScript tamat secara automatik pada baris terakhir kod secara lalai.

Keputusan contoh berikut akan kembali tidak ditentukan:

<!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>

Mengapa terdapat keputusan sedemikian? Kerana dalam JavaScript, kod Contoh 4 adalah konsisten dengan kod berikut:

function myFunction(a) {
var
power = 10; Tamat, kembalikan tidak ditentukan
a * kuasa;
}

Menghuraikan

Jika ia adalah pernyataan yang tidak lengkap, seperti berikut:

var

JavaScript akan cuba membaca baris kedua pernyataan:

kuasa = 10;

Tetapi memandangkan pernyataan seperti ini sudah lengkap:

kembali

JavaScript akan menutup pernyataan secara automatik:

kembali ;

Dalam JavaScript, koma bertitik adalah pilihan.

Memandangkan pemulangan ialah penyata yang lengkap, JavaScript akan menutup penyata pemulangan.


Menggunakan nama untuk mengindeks 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.

var person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
var x = orang.panjang;            // orang. panjang kembali 3
var y = orang[0];                                                                                                                                                                                                                                                                                                                                                                   🎜>Dalam JavaScript, objek diindeks mengikut nama.

Jika anda menggunakan nama sebagai indeks, JavaScript akan mentakrifkan semula tatasusunan sebagai objek standard apabila mengaksesnya.


Selepas melakukan operasi ini, kaedah dan sifat tatasusunan tidak boleh digunakan lagi, jika tidak ralat akan berlaku:

var person = [];

person[ "firstName"] = "John";

person["lastName"] = "Doe";

person["age"] = 46;

var x = person.length; // person.length mengembalikan 0

var y = orang[0]; // orang[0] mengembalikan tidak ditentukan





Tentukan elemen tatasusunan , koma tidak boleh ditambah pada penghujung

Takrifan yang salah:


mata = [40, 100, 1, 5, 25, 10,];

Takrifan yang betul:

mata = [40, 100, 1, 5, 25, 10];


Tentukan objek, anda tidak boleh menambah koma di hujung

Cara takrifan yang salah:

laman web = { tapak:"php Chinese website", url :"www.php.cn", like:460,}

Takrif yang betul:

laman web = { tapak:"php中文网" , url: "www.php.cn", seperti:460}

Undefined is not Null

Dalam JavaScript, null digunakan untuk objek dan 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:

jika (myObj !== null && jenis myObj !== "undefined")

Cara yang betul ialah kita perlu menggunakan typeof terlebih dahulu untuk mengesan sama ada objek ditakrifkan:

if (typeof myObj !== "undefined" && myObj !== null)



Meneruskan pembelajaran
||
<!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>
  • Cadangan kursus
  • Muat turun perisian kursus