การปิดใน JavaScript คืออะไรและทำงานอย่างไร



การปิดใน JavaScript จะถูกสร้างขึ้นทุกครั้งที่สร้างฟังก์ชันในเวลาที่สร้างฟังก์ชัน ช่วยให้สามารถควบคุมโค้ดได้ดีขึ้นเมื่อใช้งาน

เป็นภาษาที่เน้นฟังก์ชันซึ่งให้อิสระแก่ผู้ใช้เป็นอย่างมาก คุณสามารถสร้างฟังก์ชันแบบไดนามิกคัดลอกไปยังตัวแปรอื่นหรือส่งต่อเป็นอาร์กิวเมนต์ไปยังฟังก์ชันอื่นและเรียกใช้จากที่อื่นในภายหลัง การปิดใน JavaScript จะถูกสร้างขึ้นทุกครั้งที่สร้างฟังก์ชันในเวลาที่สร้างฟังก์ชัน ในบทความนี้เราจะทำความเข้าใจการปิดตามลำดับต่อไปนี้:

บทนำสู่การปิดใน JavaScript

การปิดเป็นการรวมกันของไฟล์ ฟังก์ชัน รวมเข้ากับการอ้างอิงถึงสถานะโดยรอบเช่นสภาพแวดล้อมของคำศัพท์ กล่าวอีกนัยหนึ่งการปิดจะช่วยให้คุณสามารถเข้าถึงจากฟังก์ชันภายในไปยังขอบเขตของฟังก์ชันภายนอกได้





coder - การปิดในจาวาสคริปต์ - edureka

นักพัฒนาส่วนใหญ่ใช้การปิดใน JavaScript โดยรู้ตัวหรือไม่รู้ตัว ช่วยให้สามารถควบคุมโค้ดได้ดีขึ้นเมื่อใช้งาน นอกจากนี้ยังเป็นคำถามที่พบบ่อยที่สุดในช่วงใด ๆ .



ตัวอย่าง:

ฟังก์ชัน foo () {var x = 10 ฟังก์ชัน inner () {return x} return inner} var get_func_inner = foo () console.log (get_func_inner ()) console.log (get_func_inner ()) console.log (get_func_inner ())

เอาท์พุต:

10
10
10



ที่นี่คุณสามารถเข้าถึงไฟล์ ตัวแปร x ซึ่งกำหนดไว้ในฟังก์ชัน foo () ถึงฟังก์ชัน inner () เนื่องจากฟังก์ชันต่อมาจะรักษาห่วงโซ่ขอบเขตของฟังก์ชันการปิดล้อมในเวลาที่เรียกใช้ฟังก์ชันการปิดล้อม ดังนั้นฟังก์ชันภายในจึงรู้ค่า x ผ่านห่วงโซ่ขอบเขต นี่คือวิธีที่คุณสามารถใช้การปิดใน JavaScript

การปิดในทางปฏิบัติ

การปิดช่วยให้คุณสามารถเชื่อมโยงสภาพแวดล้อมคำศัพท์กับฟังก์ชันที่ทำงานกับข้อมูลนั้น สิ่งนี้มีความคล้ายคลึงกันอย่างชัดเจนกับ การเขียนโปรแกรมเชิงวัตถุ โดยที่ออบเจ็กต์อนุญาตให้เราเชื่อมโยงคุณสมบัติของวัตถุกับวิธีการอย่างน้อยหนึ่ง

pseudocode ขั้นตอนวิธีการค้นหาแรกกว้าง

ดังนั้นคุณสามารถใช้การปิดได้ทุกที่ที่ปกติคุณอาจใช้วัตถุด้วยวิธีการเดียวเท่านั้น

ตัวอย่าง:

ฟังก์ชัน makeSizer (ขนาด) {ฟังก์ชัน return () {document.body.style.fontSize = size + 'px'}} var size12 = makeSizer (12) var size14 = makeSizer (14) var size16 = makeSizer (16)

โดยทั่วไปตัวอย่างข้างต้นจะแนบมาในรูปแบบการเรียกกลับ: ฟังก์ชันเดียวที่ดำเนินการเพื่อตอบสนองต่อเหตุการณ์

โซ่ขอบเขต

การปิดใน JavaScript มีสามขอบเขตเช่น:

  • ขอบเขตท้องถิ่น
  • ขอบเขตฟังก์ชันภายนอก
  • ขอบเขตทั่วโลก

ข้อผิดพลาดทั่วไปไม่ได้ตระหนักว่าในกรณีที่ฟังก์ชันภายนอกเป็นฟังก์ชันซ้อนกันการเข้าถึงขอบเขตของฟังก์ชันภายนอกจะรวมถึงขอบเขตการปิดล้อมของฟังก์ชันภายนอกซึ่งจะสร้างห่วงโซ่ขอบเขตของฟังก์ชันได้อย่างมีประสิทธิภาพ

// ขอบเขตสากล var x = 10 ฟังก์ชัน sum (a) {return function (b) {return function (c) {// ฟังก์ชันการส่งคืนขอบเขตฟังก์ชันภายนอก (d) {// ขอบเขตภายในส่งคืน a + b + c + d + x}}}} console.log (sum (1) (2) (3) (4)) // log 20

นอกจากนี้ยังสามารถเขียนได้โดยไม่ต้องใช้ฟังก์ชันที่ไม่ระบุชื่อ:

// ขอบเขตสากล var x = 10 ฟังก์ชัน sum (a) {return function sum2 (b) {return function sum3 (c) {// ฟังก์ชันด้านนอกขอบเขต return function sum4 (d) {// local scope return a + b + c + d + x}}}} var s = sum (1) var s1 = s (2) var s2 = s1 (3) var s3 = s2 (4) console.log (s3) // log 20

ในตัวอย่างข้างต้นมีชุดของฟังก์ชันที่ซ้อนกันซึ่งทั้งหมดนี้สามารถเข้าถึงขอบเขตภายนอกของฟังก์ชันได้ดังนั้นคุณสามารถพูดได้ว่าการปิดสามารถเข้าถึงขอบเขตฟังก์ชันภายนอกทั้งหมดที่มีการประกาศไว้

การปิดภายในวง

คุณสามารถใช้การปิดใน JavaScript เพื่อจัดเก็บฟังก์ชันที่ไม่ระบุตัวตนในทุกดัชนีของไฟล์ อาร์เรย์ . เรามาดูตัวอย่างและวิธีการใช้การปิดภายในลูป

ตัวอย่าง:

ฟังก์ชันภายนอก () {var arr = [] var i สำหรับ (i = 0 i<3 i++) { // storing anonymus function arr[i] = function () { return i } } // returning the array. return arr } var get_arr = outer() console.log(get_arr[0]()) console.log(get_arr[1]()) console.log(get_arr[2]())

เอาท์พุต:

3
3
3
3

ด้วยเหตุนี้เราจึงมาถึงตอนท้ายของบทความของเรา ฉันหวังว่าคุณจะเข้าใจวิธีการทำงานของการปิดใน JavaScript และวิธีใช้เพื่อควบคุมโค้ดได้ดีขึ้น

ตอนนี้คุณรู้เกี่ยวกับการปิดใน JavaScript แล้วให้ดูที่ไฟล์ โดย Edureka การฝึกอบรมการรับรองการพัฒนาเว็บจะช่วยให้คุณเรียนรู้วิธีสร้างเว็บไซต์ที่น่าประทับใจโดยใช้ HTML5, CSS3, Twitter Bootstrap 3, jQuery และ Google API และปรับใช้กับ Amazon Simple Storage Service (S3)

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของ“ การปิดใน JavaScript” แล้วเราจะติดต่อกลับไป