Rumah >hujung hadapan web >tutorial js >Memahami Skop dalam JavaScript

Memahami Skop dalam JavaScript

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-14 06:58:43692semak imbas

Understanding Scopes in JavaScript

Konsep skop dan penutupan dalam Javascript ialah blok asas yang diperlukan untuk penguasaan bahasa. Mereka adalah wira yang tidak didendang di sebalik Pembina, fungsi Kilang dan IIFE, untuk menamakan beberapa.

Artikel ini bertujuan untuk menerangkan skop dalam JavaScript menggunakan contoh praktikal. Dalam artikel seterusnya, kami akan membincangkan penutupan JavaScript.

Skop dan skop leksikal

Skop hanya menentukan tempat pembolehubah akan tersedia untuk digunakan dalam program JavaScript. Pada asasnya, terdapat dua jenis skop:

  1. Skop Global
  2. Skop Tempatan

Skop Global

Dengan skop global, pembolehubah disediakan di mana-mana dan boleh digunakan di mana-mana dalam program. Secara teknikal, apabila pembolehubah tidak diisytiharkan dalam mana-mana fungsi atau { kurung kurawal }, ia dikatakan berada dalam skop global.

Skop Tempatan

Sebaliknya, dengan skop setempat, pembolehubah hanya tersedia dalam konteks tertentu dan hanya boleh digunakan dalam konteks tersebut. Secara teknikal, apabila pembolehubah diisytiharkan dalam fungsi atau { kurung kurawal }, ia dikatakan berskop setempat.

let x = 3; // x (global scoped)

function addXY () {
    let y = 5; // y (locally scoped)
    return  x + y; // returns 8 since x is available anywhere in this program
}

Lebih Banyak Skop

ECMAScript ialah spesifikasi piawai yang mentakrifkan ciri teras bahasa skrip seperti JavaScript, memastikan konsistensi dan kesalingoperasian merentas platform. Sama seperti Sistem Unit Antarabangsa (SI) menyediakan rangka kerja piawai untuk pengukuran seperti meter dan kilogram untuk memastikan konsistensi di seluruh dunia, ECMAScript menetapkan piawaian untuk bahasa skrip seperti JavaScript, memastikan ia berfungsi secara seragam merentas platform dan persekitaran yang berbeza.

Spesifikasi piawai untuk JavaScript ini telah berkembang melalui edisi, dengan ciri baharu dan penambahbaikan ditambah dalam setiap versi. Antara edisi ini ialah ES6 (ECMAScript 2015) yang menyediakan kemas kini utama yang memperkenalkan let/const.

Sebelum ES6, pembolehubah telah ditakrifkan dalam JavaScript dengan kata kunci var. Dengan var, pembolehubah boleh ditakrifkan semula dan dikemas kini. Walau bagaimanapun, pembolehubah var hanya skop tempatan dalam fungsi. Lanjutan skop setempat untuk memasukkan coretan dalam { kurung kurawal } telah diperkenalkan oleh ES6 melalui let/const. Ringkasnya, pembolehubah var diskop secara tempatan dalam fungsi tetapi diskop secara global di mana-mana tempat lain.

biar dan const memperkenalkan skop blok yang menjadikan pembolehubah hanya tersedia dalam set { kurung kurawal } yang paling hampir di mana pembolehubah itu ditakrifkan. Pendakap ini boleh menjadi gelung for, keadaan if-else, atau sebarang binaan JavaScript serupa yang lain. Pendakap gigi sebegitu juga dirujuk sebagai blok kod.

Contoh:

function addXYZ() {
    var x = 3;
    let y = 4;
    const z = 5;
    return x + y + z; // 12
}

// These log undefined because var, let, and const variables are locally scoped within functions.
console.log(x);
console.log(y);
console.log(z);
let age = 10; // global variable

if (age < 18) {
    let letCandy = 2; // block-scoped variable
    console.log(`You are entitled to ${letCandy} candies`);
} else {
    var varCandy = 4; // function-scoped variable
    console.log(`You are entitled to ${varCandy} candies`);
}

console.log(age); // Logs 10, as age is globally scoped
console.log(letCandy); // Throws ReferenceError, as letCandy is block-scoped
console.log(varCandy); // Logs 4, as varCandy is globally scoped outside of functions

Dalam artikel seterusnya, kita akan membincangkan skop dan penutup leksikal. Terima kasih kerana membaca.

Atas ialah kandungan terperinci Memahami Skop dalam JavaScript. 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