Rumah >hujung hadapan web >tutorial js >Mengangkat: menghadap zon mati Temporal
Jadi, mungkin anda sedang memikirkan tentang perbezaan asas antara var vs let dan const : "const hanya untuk membaca, let boleh berubah dan var ialah kedua-duanya " dan satu-satunya perbezaan ialah ES6 memperkenalkan const dan biar dan var ialah sintaks sekolah lama.
Baiklah, tidak sama sekali.
1.- Di sini, adalah jelas bahawa kita tidak boleh memanggil membiarkan nilai sebelum mengisytiharkannya
favCoffee = 'espresso' function showFavoriteCoffe() { console.log(favCoffee) } showFavoriteCoffe() // Cannot access 'favCoffee' before initialization let favCoffee
2.- Itu boleh berubah jika kita menggunakan var sebaliknya biarkan:
favCoffee = 'espresso' function showFavoriteCoffe() { console.log(favCoffee) } showFavoriteCoffe() //espresso var favCoffee
Ya, mungkin ia kelihatan seperti kuasa tambahan penggunaan var.
Ini dipanggil Hoisting satu proses yang membolehkan anda menggunakan pembolehubah sebelum ia diisytiharkan.
3.- Mari kita pertimbangkan contoh lain ini:
console.log(favCoffee) // undefined var favCoffee = 'americano'
Walaupun, dalam contoh ini var juga mengangkat di sini kita berhadapan dengan TDZ.
Ia ditakrifkan sebagai keadaan di mana pembolehubah tidak boleh diakses, walaupun ia berada dalam skop, ia belum diisytiharkan.
{ /* TDZ starts . . . */ var favCoffee = 'expresso' // TDZ ends console.log(favCoffee) // expresso }
Jadi dalam proses mengangkat disebabkan oleh TDZ, secara lalai JS mengembalikan nilai var yang dimulakan sebagai tidak ditentukan, tetapi dengan let atau const ia mengembalikan ralat yang menyatakan bahawa pembolehubah belum diisytiharkan. Jadi ini sangat membantu untuk menangkap ralat dan memaksa anda untuk mengelak daripada menggunakan pembolehubah sebelum ia diisytiharkan
//using var favCoffee = 'expresso' var favCoffee console.log(favCoffee) // undefined
//using const favCoffee = 'expresso' const favCoffee console.log(favCoffee) // uncaught ReferenceError: Cannot access 'favCoffee' before initialization
(dan inilah sebabnya penting untuk mempertimbangkan menggunakan pembaris wartawan seperti ESLint untuk mengelakkan beberapa kesilapan semasa anda mengekod).
Pengangkatan sentiasa ada, jadi adalah penting untuk menggunakan let dan const sejauh yang anda boleh, ini mengelakkan ralat yang tidak ditentukan dan membolehkan anda menangkapnya dengan lebih cepat.
** ES6
Atas ialah kandungan terperinci Mengangkat: menghadap zon mati Temporal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!