Yang disebut penutupan harus merujuk pada: fungsi internal yang membaca variabel selain fungsi saat ini, yaitu, lingkungan konteks di mana ia dibuat.
Salinan kode adalah sebagai berikut:
fungsi hello () {
var char = "halo, dunia";
function print () {
Console.log (char);
};
return print ();
}
Perlu dicatat bahwa fungsi cetak di sini mengacu pada variabel char dari fungsi hello eksternal, jadi di sini kita dapat mengembalikan a
Salinan kode adalah sebagai berikut:
halo, dunia
Dalam arti tertentu, fungsi ini harus dikaitkan dengan ruang lingkup. Tentu saja, kami tidak memiliki cara untuk mengakses char secara langsung, kecuali ada kesalahan ketika kami mendeklarasikan variabel ini. menyukai
Salinan kode adalah sebagai berikut:
fungsi hello () {
char = "halo, dunia";
function print () {
Console.log (char);
};
return print ();
}
Hanya karena ada var yang hilang.
Salinan kode adalah sebagai berikut:
Di sini halo menjadi penutupan. Penutupan adalah objek khusus. Ini terdiri dari dua bagian: fungsi, dan lingkungan di mana fungsi dibuat. Lingkungan terdiri dari setiap variabel lokal dalam ruang lingkup ketika penutupan dibuat.
Penutupan JavaScript dan ini
Perlu dicatat bahwa mungkin ada masalah saat membaca ini dan argumen.
Salinan kode adalah sebagai berikut:
fungsi hello () {
this.char = "halo, dunia";
output fungsi () {
char = "Aku tidak halo dunia";
console.log (this.char);
};
output return ();
}
Tentu saja, contoh ini tidak cukup tepat. Jadi, kita membutuhkan contoh tambahan untuk menjelaskan masalah ini. Berikut ini adalah contoh dari "JavaScript Advanced Programming" untuk menggambarkan masalah ini.
Salinan kode adalah sebagai berikut:
var name = "the window";
var objek = {
Nama: "Objek saya",
getNamefunc: function () {
return function () {
kembalikan nama ini;
}
}
};
object.getnamefunc () () ()
Tetapi penggunaan ini benar -benar, dan solusinya adalah menyimpan variabel sementara yang, seperti yang disebutkan dalam artikel sebelumnya "Beberapa pengetahuan tentang ini dalam JavaScript".
Salinan kode adalah sebagai berikut:
var name = "the window";
var objek = {
Nama: "Objek saya",
getNamefunc: function () {
var itu = ini;
return function () {
kembalikan itu.name;
}
}
};
object.getnamefunc () () ()
Penutupan Javascript dan Baca dan Tulis Variabel
Perlu dicatat bahwa jika kita tidak memproses variabel kita dengan baik, kita juga dapat memodifikasinya.
Salinan kode adalah sebagai berikut:
fungsi hello () {
var char = "halo, dunia";
kembali{
set: function (string) {
return char = string;
},
Print: function () {
Console.log (char)
}
}
}
var mengatakan = hello ();
say.set ('Hello baru, dunia')
say.print () // hello world baru
Penutupan dan kinerja JavaScript
Kutipan MDC
Salinan kode adalah sebagai berikut:
Jika penutupan tidak diperlukan untuk tugas -tugas khusus tertentu, tidak bijaksana untuk membuat fungsi dalam fungsi lain tanpa perlu, karena penutupan memiliki efek negatif pada kinerja skrip, termasuk kecepatan pemrosesan dan konsumsi memori.
Artikel itu juga disebutkan.
Salinan kode adalah sebagai berikut:
Misalnya, saat membuat objek atau kelas baru, metode biasanya harus dikaitkan dengan prototipe objek daripada didefinisikan dalam konstruktor objek. Alasannya adalah bahwa hal ini akan menyebabkan metode tersebut dipindahkan sekali setiap kali konstruktor dipanggil (yaitu, untuk penciptaan setiap objek).