Rumah hujung hadapan web tutorial js Twist Seronok JavaScript dan Cara TypeScript Menjadikannya Lebih Baik

Twist Seronok JavaScript dan Cara TypeScript Menjadikannya Lebih Baik

Oct 12, 2024 pm 02:32 PM

JavaScript’s Fun Twists and How TypeScript Makes It Better

JavaScript ialah bahasa yang kita semua suka, bukan? Ia fleksibel, ringan dan berjalan di mana-mana. Tetapi untuk semua kehebatannya, katakan secara jujur, ia boleh menjadi pelik. Jenis pelik yang membuat anda mempersoalkan kewarasan anda selepas melihat sesuatu yang tidak sepatutnya berfungsi.

Dalam artikel ini, kami akan meninjau beberapa kelemahan dalam JavaScript - tingkah laku yang mengejutkan anda apabila anda tidak menjangkakannya. Nasib baik, terdapat seorang kesatria dalam perisai bersinar untuk pembangun yang dipanggil TypeScript. Kami menunjukkan kepada anda di sini bagaimana ia boleh menyelamatkan anda daripada merobek rambut anda dengan menjadikan keanehan JavaScript tersebut agak lebih terurus.


1. Yang Hebat == vs === Debat

JavaScript memberi kita dua rasa kesaksamaan: == atau kesaksamaan longgar dan === atau kesaksamaan yang ketat.

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

Tunggu, apa? Ya, JavaScript membuat 0 dan '0' dianggap sama dengan ==, tetapi tidak dengan ===. Ini kerana == melakukan paksaan menaip, atau menukar jenis, sebelum melakukan perbandingan. Ia cuba membantu, menjadikan rentetan itu menjadi nombor untuk anda—tetapi bantuan ini membawa kepada pepijat.

Bayangkan menggunakan == pada input pengguna untuk menyemak nombor. Anda mungkin menjadi benar apabila jenisnya tidak sama yang membawa kepada tingkah laku yang tidak dijangka yang sukar untuk dikesan. Mengapa perkara ini penting? Kerana jenis paksaan JavaScript sering berfungsi sehingga ia memecahkan sesuatu yang penting.

Bagaimana TypeScript Membantu

TypeScript sudah pun menguatkuasakan keselamatan jenis di luar kotak. Jika anda membandingkan dua perkara daripada jenis yang berbeza, ia akan menjerit lama sebelum anda boleh menjalankan sebarang kod:

let a: number = 0;
let b: string = '0';

console.log(a === b); // TypeScript Error: This comparison is invalid
Salin selepas log masuk

Sebarang kejutan hilang membandingkan nombor dengan rentetan. TypeScript memastikan anda sentiasa membandingkan epal dan epal atau dalam kes ini nombor dengan nombor.


2. The Mysterious undefined vs null

Kedua-dua undefined dan null bercakap tiada apa-apa, tetapi dengan cara yang berbeza secara halus. undefined ialah perkara yang diberikan oleh JavaScript kepada pembolehubah yang belum dimulakan, manakala null digunakan apabila anda sengaja mahu memberikan nilai kosong. Mereka berbeza, namun cukup serupa untuk mengelirukan.

let foo;
console.log(foo); // undefined

let bar = null;
console.log(bar); // null
Salin selepas log masuk

Melainkan anda berhati-hati, anda mungkin akhirnya menyemak satu tetapi tidak yang lain, yang mengakibatkan beberapa pepijat yang mengelirukan.

if (foo == null) {
    console.log("This catches both undefined and null");
}
Salin selepas log masuk

Ini berfungsi tetapi boleh membawa kepada pepijat halus jika anda tidak membezakan dengan jelas antara keduanya.

Bagaimana TypeScript Membantu

TypeScript menggalakkan anda untuk menyatakan dengan jelas dan tepat sama ada sesuatu boleh menjadi batal atau tidak ditentukan. Ia melakukan ini dengan membuat anda mengendalikan kedua-dua kes secara eksplisit, jadi anda pasti tentang perkara yang berlaku:

let foo: number | undefined;
let bar: number | null = null;

// TypeScript will enforce these constraints
foo = null; // Error
bar = 5; // No problem!

Salin selepas log masuk

Dengan TypeScript, anda memutuskan jenis yang dibenarkan supaya anda tidak mencampurkan jenis secara tidak sengaja. Ketegasan jenis ini melindungi anda daripada pepijat yang anda terlupa untuk menyemak sama ada batal atau tidak ditentukan.


3. Kes Penasaran NaN (Bukan Nombor)

Pernahkah anda terserempak dengan NaN yang digeruni? Ia adalah singkatan untuk Not-a-Number, dan ia muncul apabila anda cuba melakukan operasi matematik yang tidak masuk akal.

console.log(0 / 0);  // NaN
console.log("abc" - 5);  // NaN
Salin selepas log masuk

Inilah hasil tangkapannya: NaN sebenarnya daripada jenis nombor. Betul, Bukan-Nombor ialah nombor!

console.log(typeof NaN); // "number"
Salin selepas log masuk

Ini boleh membawa kepada beberapa hasil yang benar-benar pelik jika anda tidak menyemak NaN secara eksplisit. Lebih buruk lagi, NaN tidak pernah sama dengan dirinya sendiri, jadi anda tidak boleh membandingkannya dengan mudah untuk memeriksa sama ada ia wujud.

console.log(NaN === NaN); // false
Salin selepas log masuk

Bagaimana TypeScript Membantu

TypeScript boleh mengurangkan isu ini dengan menguatkuasakan pemeriksaan jenis yang betul dan menangkap operasi yang tidak baik pada masa penyusunan. Jika TypeScript boleh menyimpulkan bahawa operasi akan mengembalikan NaN, ia boleh menimbulkan ralat sebelum kod anda berjalan.

let result: number = 0 / 0; // Warning: Possible 'NaN'
Salin selepas log masuk

TypeScript juga boleh membantu anda mengecilkan masa dan tempat NaN mungkin muncul, menggalakkan pengendalian nilai berangka yang lebih baik.


4. The Wild ini

ini dalam JavaScript ialah salah satu konsep yang paling berkuasa tetapi mudah disalah fahami. Nilai ini bergantung sepenuhnya pada bagaimana fungsi dipanggil, yang boleh membawa kepada tingkah laku yang tidak diingini dalam konteks tertentu.

const person = {
    name: 'Alice',
    greet() {
        console.log('Hello, ' + this.name);
    }
};

setTimeout(person.greet, 1000); // Uh-oh, what happened here?
Salin selepas log masuk

Apa yang anda jangkakan ialah melihat "Hello, Alice" dicetak selepas satu saat, tetapi sebaliknya, anda akan mendapat Hello, undefined. kenapa? Kerana setTimeout dalam ini merujuk kepada objek global, bukan objek orang.

Bagaimana TypeScript Membantu

TypeScript boleh membantu anda mengelakkan jenis isu ini dengan menggunakan fungsi anak panah yang tidak mempunyai ini sendiri dan mengekalkan konteks objek yang berada di dalamnya.

const person = {
    name: 'Alice',
    greet: () => {
        console.log('Hello, ' + person.name); // Always refers to 'person'
    }
};

setTimeout(person.greet, 1000); // No more surprises!
Salin selepas log masuk

Tiada lagi tingkah laku ini yang tidak dijangka. TypeScript memaksa anda berfikir tentang konteks dan membantu anda mengikat ini dengan betul, mengurangkan risiko pepijat pelik yang tidak ditentukan.


5. Function Hoisting: When Order Does Not Matter

JavaScript functions are hoisted to the top of the scope; that means you can invoke them even before you have declared them in your code. This is kind of a cool trick, but can also be confusing if you are not paying attention to what's going on.

greet();

function greet() {
    console.log('Hello!');
}
Salin selepas log masuk

While this can be convenient, it can also cause confusion, especially when you're trying to debug your code.

This works just fine, because of function declaration hoisting. But it can make your code harder to follow, especially for other developers (or yourself after a few months away from the project).

How TypeScript Helps

TypeScript does not change how hoisting works but it gives you clearer feedback about your code's structure. If you accidentally called a function before it is defined, TypeScript will let you know immediately.

greet(); // Error: 'greet' is used before it’s defined

function greet() {
    console.log('Hello!');
}
Salin selepas log masuk

TypeScript forces you to do some cleanup, where your functions are declared before they are used. It makes your code much more maintainable this way.


Wrapping It Up

JavaScript is an amazing language, but it can certainly be quirky at times. By using TypeScript, you can tame some of JavaScript’s weirdest behaviors and make your code safer, more reliable, and easier to maintain. Whether you’re working with null and undefined, taming this, or preventing NaN disasters, TypeScript gives you the tools to avoid the headaches that can arise from JavaScript’s flexible—but sometimes unpredictable—nature.

So next time you find yourself puzzling over a strange JavaScript quirk, remember: TypeScript is here to help!

Happy coding!

Atas ialah kandungan terperinci Twist Seronok JavaScript dan Cara TypeScript Menjadikannya Lebih Baik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1653
14
Tutorial PHP
1251
29
Tutorial C#
1224
24
Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apr 04, 2025 pm 02:42 PM

Soalan dan penyelesaian yang sering ditanya untuk percetakan tiket kertas terma depan dalam pembangunan front-end, percetakan tiket adalah keperluan umum. Walau bagaimanapun, banyak pemaju sedang melaksanakan ...

Demystifying JavaScript: Apa yang berlaku dan mengapa penting Demystifying JavaScript: Apa yang berlaku dan mengapa penting Apr 09, 2025 am 12:07 AM

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Siapa yang dibayar lebih banyak Python atau JavaScript? Siapa yang dibayar lebih banyak Python atau JavaScript? Apr 04, 2025 am 12:09 AM

Tidak ada gaji mutlak untuk pemaju Python dan JavaScript, bergantung kepada kemahiran dan keperluan industri. 1. Python boleh dibayar lebih banyak dalam sains data dan pembelajaran mesin. 2. JavaScript mempunyai permintaan yang besar dalam perkembangan depan dan stack penuh, dan gajinya juga cukup besar. 3. Faktor mempengaruhi termasuk pengalaman, lokasi geografi, saiz syarikat dan kemahiran khusus.

Bagaimana untuk mencapai kesan menatal paralaks dan kesan animasi elemen, seperti laman web rasmi Shiseido?
atau:
Bagaimanakah kita dapat mencapai kesan animasi yang disertai dengan menatal halaman seperti laman web rasmi Shiseido? Bagaimana untuk mencapai kesan menatal paralaks dan kesan animasi elemen, seperti laman web rasmi Shiseido? atau: Bagaimanakah kita dapat mencapai kesan animasi yang disertai dengan menatal halaman seperti laman web rasmi Shiseido? Apr 04, 2025 pm 05:36 PM

Perbincangan mengenai realisasi kesan animasi tatal dan elemen Parallax dalam artikel ini akan meneroka bagaimana untuk mencapai yang serupa dengan laman web rasmi Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ... ...

Adakah JavaScript sukar belajar? Adakah JavaScript sukar belajar? Apr 03, 2025 am 12:20 AM

Pembelajaran JavaScript tidak sukar, tetapi ia mencabar. 1) Memahami konsep asas seperti pembolehubah, jenis data, fungsi, dan sebagainya. 2) Pengaturcaraan asynchronous tuan dan melaksanakannya melalui gelung acara. 3) Gunakan operasi DOM dan berjanji untuk mengendalikan permintaan tak segerak. 4) Elakkan kesilapan biasa dan gunakan teknik debugging. 5) Mengoptimumkan prestasi dan mengikuti amalan terbaik.

Evolusi JavaScript: Trend Semasa dan Prospek Masa Depan Evolusi JavaScript: Trend Semasa dan Prospek Masa Depan Apr 10, 2025 am 09:33 AM

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

Bagaimana untuk menggabungkan elemen array dengan ID yang sama ke dalam satu objek menggunakan JavaScript? Bagaimana untuk menggabungkan elemen array dengan ID yang sama ke dalam satu objek menggunakan JavaScript? Apr 04, 2025 pm 05:09 PM

Bagaimana cara menggabungkan elemen array dengan ID yang sama ke dalam satu objek dalam JavaScript? Semasa memproses data, kita sering menghadapi keperluan untuk mempunyai id yang sama ...

Bagaimana untuk melaksanakan fungsi seretan panel dan drop pelarasan yang serupa dengan vscode dalam pembangunan front-end? Bagaimana untuk melaksanakan fungsi seretan panel dan drop pelarasan yang serupa dengan vscode dalam pembangunan front-end? Apr 04, 2025 pm 02:06 PM

Terokai pelaksanaan fungsi seretan panel dan drop panel seperti VSCode di bahagian depan. Dalam pembangunan front-end, bagaimana untuk melaksanakan vscode seperti ...

See all articles