การปิดที่เรียกว่าควรอ้างถึง: ฟังก์ชั่นภายในที่อ่านตัวแปรอื่นนอกเหนือจากฟังก์ชั่นปัจจุบันนั่นคือสภาพแวดล้อมบริบทที่สร้างขึ้น
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่นสวัสดี () {
var char = "สวัสดีโลก";
ฟังก์ชั่นพิมพ์ () {
console.log (ถ่าน);
-
return print ();
-
ควรสังเกตว่าฟังก์ชั่นการพิมพ์ที่นี่หมายถึงตัวแปรถ่านของฟังก์ชั่นสวัสดีภายนอกดังนั้นที่นี่เราสามารถส่งคืนก
การคัดลอกรหัสมีดังนี้:
สวัสดีโลก
ในแง่หนึ่งฟังก์ชั่นนี้ควรนำมาประกอบกับขอบเขต แน่นอนว่าเราไม่มีทางเข้าถึงถ่านได้โดยตรงเว้นแต่จะมีข้อผิดพลาดเมื่อเราประกาศตัวแปรนี้ ชอบ
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่นสวัสดี () {
char = "สวัสดีโลก";
ฟังก์ชั่นพิมพ์ () {
console.log (ถ่าน);
-
return print ();
-
เพียงเพราะมี var หายไป
การคัดลอกรหัสมีดังนี้:
ที่นี่สวัสดีกลายเป็นปิด การปิดเป็นวัตถุพิเศษ ประกอบด้วยสองส่วน: ฟังก์ชั่นและสภาพแวดล้อมที่สร้างฟังก์ชั่น สภาพแวดล้อมประกอบด้วยตัวแปรท้องถิ่นใด ๆ ในขอบเขตเมื่อสร้างการปิด
การปิด JavaScript และสิ่งนี้
ควรสังเกตว่าอาจมีปัญหาเมื่ออ่านสิ่งนี้และข้อโต้แย้ง
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่นสวัสดี () {
this.char = "สวัสดีโลก";
ฟังก์ชันเอาต์พุต () {
char = "ฉันไม่สวัสดีโลก";
console.log (this.char);
-
return output ();
-
แน่นอนตัวอย่างนี้ไม่เหมาะสมพอ ดังนั้นเราต้องการตัวอย่างเพิ่มเติมเพื่ออธิบายปัญหานี้ ต่อไปนี้เป็นตัวอย่างจาก "JavaScript Advanced Programming" เพื่อแสดงปัญหานี้
การคัดลอกรหัสมีดังนี้:
ชื่อ var = "หน้าต่าง";
var object = {
ชื่อ: "วัตถุของฉัน",
getNameFunc: function () {
return function () {
ส่งคืนสิ่งนี้ชื่อ;
-
-
-
Object.getNameFunc () () ()
แต่การใช้งานนี้เป็นจริงและทางออกคือการบันทึกตัวแปรชั่วคราวที่ดังที่ได้กล่าวไว้ในบทความก่อนหน้านี้ "ความรู้บางอย่างเกี่ยวกับเรื่องนี้ใน JavaScript"
การคัดลอกรหัสมีดังนี้:
ชื่อ var = "หน้าต่าง";
var object = {
ชื่อ: "วัตถุของฉัน",
getNameFunc: function () {
var that = this;
return function () {
ส่งคืนนั้นชื่อ;
-
-
-
Object.getNameFunc () () ()
JavaScript ปิดและอ่านและเขียนตัวแปร
เป็นที่น่าสังเกตว่าถ้าเราไม่ประมวลผลตัวแปรของเราได้ดีเราก็สามารถปรับเปลี่ยนได้
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่นสวัสดี () {
var char = "สวัสดีโลก";
กลับ{
ชุด: ฟังก์ชัน (สตริง) {
return char = string;
-
พิมพ์: function () {
console.log (ถ่าน)
-
-
-
var says = hello ();
say.set ('Hello, World' ใหม่ ')
Say.print () // Hello World ใหม่
การปิดและประสิทธิภาพของ JavaScript
อ้าง MDC
การคัดลอกรหัสมีดังนี้:
หากการปิดไม่จำเป็นสำหรับงานพิเศษบางอย่างก็ไม่ฉลาดในการสร้างฟังก์ชั่นในฟังก์ชั่นอื่น ๆ โดยไม่จำเป็นเนื่องจากการปิดมีผลกระทบเชิงลบต่อประสิทธิภาพของสคริปต์รวมถึงความเร็วในการประมวลผลและการใช้หน่วยความจำ
บทความยังกล่าวถึง
การคัดลอกรหัสมีดังนี้:
ตัวอย่างเช่นเมื่อสร้างวัตถุหรือคลาสใหม่วิธีการควรเชื่อมโยงกับต้นแบบของวัตถุแทนที่จะกำหนดไว้ในตัวสร้างของวัตถุ เหตุผลก็คือสิ่งนี้จะทำให้วิธีการที่จะได้รับการกำหนดใหม่ทุกครั้งที่มีการเรียกตัวสร้าง (นั่นคือสำหรับการสร้างวัตถุแต่ละชิ้น)