Rumah >hujung hadapan web >tutorial js >Mengangkat: menghadap zon mati Temporal

Mengangkat: menghadap zon mati Temporal

DDD
DDDasal
2024-12-13 12:44:11630semak imbas

Hoisting: facing Temporal dead zone

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.


Menganalisis beberapa contoh

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.


Zon Mati Sementara

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

}

Terima kasih ES6*

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).


Kesimpulan

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!

Kenyataan:
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