Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ปัญหานี้คืออะไรในฟังก์ชันที่ไม่ระบุตัวตนที่ดำเนินการด้วยตนเองของ JavaScript


สมมติว่านี่คือข้อมูลโค้ดตัวอย่าง และเราจำเป็นต้องบอกผลลัพธ์ที่เป็นไปได้สำหรับข้อมูลโค้ดนี้และให้คำอธิบายสำหรับข้อมูลนี้

var name = 'Zakir';
(() => {
   name = 'Rahul';
   return;
   console.log(name);
   function name(){
      let lastName = 'Singh';
   }
})();
console.log(name);

มาแก้ปัญหานี้ทีละบรรทัดด้วยวิธีการที่ไร้เดียงสา

1 → 'Zakir' เก็บไว้ในชื่อตัวแปร

3 → เราเข้าสู่ฟังก์ชันที่ไม่ระบุตัวตนที่ดำเนินการเอง

4 → ชื่อตัวแปรเริ่มต้นใหม่เป็น 'ราหุล'

5 → พบคำสั่ง return ดังนั้นเราจึงออกจากฟังก์ชัน

15 → พิมพ์ชื่อตัวแปรไปยังหน้าจอที่มีค่าปัจจุบันคือ ‘ราหุล’

ดังนั้นผลลัพธ์สุดท้ายจะเป็น

Rahul

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

1 → 'Zakir' เก็บไว้ในชื่อตัวแปร

3 → เราเข้าสู่ฟังก์ชันที่ไม่ระบุตัวตนที่ดำเนินการเอง

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

ตัวอย่าง

let name = 'Zakir';
(() => {
   let name;
   name = 'Rahul';
   return;
   console.log(name);
   name = function(){
      let lastName = 'Singh';
   }
})();
console.log(name);

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

ดังนั้น เมื่อชื่อตัวแปรถูกเริ่มต้นใหม่ จะเป็นชื่อตัวแปรในเครื่องที่จะเริ่มต้นใหม่และไม่ใช่ตัวแปรส่วนกลาง ดังนั้นหลังจากนี้ เราจะออกจากฟังก์ชันดำเนินการเองและพิมพ์ชื่อตัวแปรทั่วโลกไปยังคอนโซล ซึ่งยังคงเก็บ "Zakir" ไว้ ดังนั้นผลลัพธ์จะเป็น −

ผลลัพธ์

Zakir