Rumah >hujung hadapan web >tutorial js >Bagaimanakah Fungsi Tahap Blok ES6 Berkelakuan dalam Mod Tegas dan Tidak Tegas, dengan dan tanpa Sambungan Web?

Bagaimanakah Fungsi Tahap Blok ES6 Berkelakuan dalam Mod Tegas dan Tidak Tegas, dengan dan tanpa Sambungan Web?

DDD
DDDasal
2024-12-17 01:39:26436semak imbas

How Do ES6 Block-Level Functions Behave in Strict and Non-Strict Modes, with and without Web Extensions?

Fungsi Tahap Blok dalam ES6: Ketepatan Semantik

Spesifikasi ES6 memperkenalkan fungsi peringkat blok, membenarkan pengisytiharan fungsi dalam blok. Memahami semantik mereka adalah penting untuk pengaturcaraan yang berkesan.

Gelagat Fungsi Tahap Sekatan

Setting Visible Outside Block Hoisted Hoisting Scope Temporal Dead Zone
Non-strict, No Web Extensions No No N/A N/A
Strict, No Web Extensions No Yes Block Level Yes
Non-strict, With Web Extensions Yes Yes Function Level Before Block
Strict, With Web Extensions Yes Yes Function Level Before Block

Mod Tegas dan Fungsi Tahap Sekatan

"Mod ketat" dalam konteks ini merujuk kepada ketegasan fungsi atau skrip di mana blok yang mengandungi pengisytiharan fungsi muncul, bukan fungsi itu sendiri. "sambungan web" hanya digunakan pada kod ceroboh (tidak ketat) dengan penampilan fungsi "waras" (tiada perlanggaran nama).

Dalam ES6 tulen (tanpa "sambungan web"), pengisytiharan fungsi dalam blok mempunyai semantik yang konsisten tanpa mengira ketegasan. Ia dinaikkan ke bahagian atas blok dan berkelakuan seperti pengisytiharan fungsi biasa.

Semantik Keserasian Web

Dengan "sambungan web," mod ceroboh memperkenalkan semantik tambahan. Perisytiharan fungsi dalam blok dinaikkan ke bahagian atas fungsi lampiran sebagai perisytiharan var, dan objek fungsi diperuntukkan kepada pembolehubah ini apabila perisytiharan fungsi dinilai.

Ini menghasilkan dua pengikatan untuk perkara yang sama pengecam: satu skop fungsi (kelihatan di luar blok) dan satu skop blok (hanya kelihatan dalam blok). Pengikatan skop fungsi dimulakan dengan undefined sehingga fungsi diisytiharkan, pada ketika itu ia diberikan objek fungsi.

Sebelum pengisytiharan fungsi ditemui dalam pelaksanaan blok, pengikatan skop fungsi tidak ditentukan dan mengakses ia akan membuang pengecualian.

Atas ialah kandungan terperinci Bagaimanakah Fungsi Tahap Blok ES6 Berkelakuan dalam Mod Tegas dan Tidak Tegas, dengan dan tanpa Sambungan Web?. 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