Keunikan JavaScript: Perkara yang Anda Perlu Tahu

PHPz
Lepaskan: 2024-08-01 09:10:51
asal
929 orang telah melayarinya

JavaScript Quirks: What You Need to Know

JavaScript ialah bahasa yang berkuasa dan fleksibel, tetapi ia juga mempunyai beberapa ciri yang boleh mengejutkan walaupun pembangun berpengalaman. Memahami tingkah laku aneh ini boleh membantu anda menulis kod yang lebih mantap dan bebas pepijat. Dalam artikel ini, kami akan meneroka beberapa keanehan yang paling ketara dalam JavaScript.

1. Jenis Paksaan

JavaScript menukar jenis secara automatik dalam situasi tertentu, yang boleh membawa kepada hasil yang tidak dijangka.

console.log(1 + '1'); // '11' - Number 1 is coerced to a string
console.log(1 - '1'); // 0 - String '1' is coerced to a number
console.log(true + true); // 2 - true is coerced to 1
console.log('' == 0); // true - Empty string is coerced to 0
console.log([] == 0); // true - Empty array is coerced to 0
Salin selepas log masuk

2. NaN Tidak Sama dengan NaN

NaN bermaksud "Bukan-Nombor" dan digunakan untuk mewakili nilai yang bukan nombor yang sah. Menariknya, NaN tidak sama dengan dirinya sendiri.

console.log(NaN === NaN); // false
console.log(Number.isNaN(NaN)); // true - Correct way to check for NaN
Salin selepas log masuk

3. Jenis Operator

Jenis pengendali boleh mengembalikan beberapa hasil yang tidak dijangka.

console.log(typeof null); // 'object' - This is a long-standing bug in JavaScript
console.log(typeof []); // 'object' - Arrays are technically objects in JavaScript
console.log(typeof function(){}); // 'function' - Functions have their own type
Salin selepas log masuk

4. Menambah Tatasusunan

Menambah dua tatasusunan bersama-sama boleh menghasilkan hasil yang mengejutkan disebabkan paksaan jenis.

console.log([] + []); // '' - Both arrays are coerced to empty strings
console.log([] + {}); // '[object Object]' - Empty array is coerced to empty string, empty object is coerced to string '[object Object]'
console.log({} + []); // 0 - Here, {} is interpreted as an empty block
Salin selepas log masuk

5. Aritmetik Titik Terapung

JavaScript menggunakan aritmetik titik terapung, yang boleh membawa kepada isu ketepatan.

console.log(0.1 + 0.2); // 0.30000000000000004
console.log(0.1 + 0.2 === 0.3); // false
Salin selepas log masuk

6. Operator Berganda Sama (==).

Pengendali == melakukan paksaan jenis sebelum perbandingan, yang boleh membawa kepada hasil yang tidak dijangka. Secara amnya, lebih baik menggunakan pengendali kesaksamaan yang ketat (===).

console.log('' == false); // true
console.log(0 == false); // true
console.log('' == 0); // true
console.log(null == undefined); // true
Salin selepas log masuk

7. Skop yang Mengelirukan dengan var

Pembolehubah yang diisytiharkan dengan var adalah skop fungsi, bukan skop blok, yang boleh membawa kepada tingkah laku yang tidak dijangka.

if (true) {
  var x = 5;
}
console.log(x); // 5 - x is available outside the block

for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 1000);
}
// Output: 3 3 3 - Because var is function-scoped, the same i is referenced
Salin selepas log masuk

8. Objek Global

Dalam penyemak imbas, ini merujuk kepada objek tetingkap global dalam mod tidak ketat. Ini boleh menyebabkan beberapa tingkah laku yang mengejutkan.

function foo() {
  console.log(this); // window (in browser)
}
foo();

const bar = {
  method: function() {
    console.log(this); // bar object
  }
};
bar.method();

const baz = bar.method;
baz(); // window (in browser)
Salin selepas log masuk

Kesimpulan

JavaScript ialah bahasa yang serba boleh dan berkuasa, tetapi penting untuk mengetahui ciri-ciri dan keistimewaannya. Dengan memahami tingkah laku aneh ini, anda boleh mengelakkan perangkap biasa dan menulis kod yang lebih dipercayai. Teruskan meneroka dan bereksperimen dengan JavaScript untuk memperdalam pemahaman anda tentang ini dan aspek menarik lain dalam bahasa.


Adakah anda tahu ciri-ciri lain dalam Javascript? Tulis dalam komen.

Adakah anda tahu kaedah asas dalam Javascript? Lihat artikel saya di sini untuk mengetahui lebih lanjut!

Atas ialah kandungan terperinci Keunikan JavaScript: Perkara yang Anda Perlu Tahu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan