มีตัวแปรสองประเภทใน JavaScript: ตัวแปรท้องถิ่นและตัวแปรทั่วโลก แน่นอนบทความของเราคือช่วยให้คุณแยกแยะตัวแปรทั้งสองนี้
ขั้นแรกตัวแปรท้องถิ่นอ้างถึงฟังก์ชั่นที่สามารถเรียกได้ภายในฟังก์ชั่นที่ประกาศโดยตัวแปรนี้ ตัวแปรที่สามารถเรียกได้ในรหัสทั้งหมดเป็นตัวแปรส่วนกลาง แน่นอนว่ามันไม่ชัดเจนที่จะเข้าใจอย่างแท้จริง ฉันจะแนะนำรายละเอียดด้านล่าง:
อย่างที่เราทราบกันดีว่าตัวแปรจะต้องมีการประกาศด้วยคำหลัก VAR อย่างไรก็ตามตัวแปรสามารถใช้โดยปริยายใน JavaScript ซึ่งหมายความว่าใช้โดยตรงโดยไม่มีการประกาศ ยิ่งไปกว่านั้นโปรดระวังว่า JavaScript ใช้ตัวแปรที่ประกาศโดยปริยายเป็นตัวแปรทั่วโลก
ตัวอย่างเช่น:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น myname () {
i = 'Yuanjianhang';
-
myname ();
ฟังก์ชั่น saysname () {
การแจ้งเตือน (i);
-
sayname ();
ผลลัพธ์ผลลัพธ์คือ: Yuanjianhang
นี่แสดงให้เห็นว่าตัวแปรฉันเป็นตัวแปรส่วนกลาง หากรหัสข้างต้นเปลี่ยนเป็นต่อไปนี้:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น myname () {
var i = 'yuanjianhang';
-
myname ();
ฟังก์ชั่น saysname () {
การแจ้งเตือน (i);
-
sayname ();
ณ จุดนี้เบราว์เซอร์จะไม่มีผลลัพธ์ผลลัพธ์เนื่องจากฉันถูกกำหนดไว้ในฟังก์ชั่น myname ดังนั้นมันจึงเป็นตัวแปรท้องถิ่นของ myname และไม่สามารถเรียกได้จากภายนอก
ตอนนี้มองย้อนกลับไปที่รหัสต่อไปนี้:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น myname () {
i = 'Yuanjianhang';
-
myname ();
ฟังก์ชั่น saysname () {
การแจ้งเตือน (i);
-
sayname ();
ทีนี้มาทำการเปลี่ยนแปลงและลบ myname (); และรหัสมีดังนี้:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น myname () {
i = 'Yuanjianhang';
-
ฟังก์ชั่น saysname () {
การแจ้งเตือน (i);
-
sayname ();
ในเวลานี้เบราว์เซอร์จะไม่ตอบสนองมากนัก เพราะแม้ว่าฉันจะเป็นตัวแปรทั่วโลกฟังก์ชัน myname () ไม่ได้ถูกเรียกดังนั้นมันจึงเทียบเท่ากับที่ฉันได้รับการประกาศ แต่ก็ไม่ได้กำหนดค่าใด ๆ ให้กับฉันดังนั้นจึงไม่มีผลลัพธ์
ในทำนองเดียวกันหากตัวอย่างข้างต้นเปลี่ยนเป็น:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น myname () {
i = 'Yuanjianhang';
-
ฟังก์ชั่น saysname () {
การแจ้งเตือน (i);
-
sayname ();
myname ();
ในกรณีนี้จะไม่มีผลลัพธ์ที่จะส่งออก เมื่อเรียกใช้รหัส JavaScript ค่าของตัวแปรฉันจะถูกตรวจสอบเมื่อเรียกใช้ฟังก์ชัน sayname () ในเวลานี้ฟังก์ชั่น myname ยังไม่ได้ดำเนินการซึ่งหมายความว่าฉันยังไม่ได้รับมอบหมายดังนั้นจึงไม่มีผลลัพธ์ใด ๆ
เพื่ออำนวยความสะดวกในการทำความเข้าใจที่ดีขึ้นของทุกคนนี่เป็นอีกตัวอย่างหนึ่ง:
การคัดลอกรหัสมีดังนี้:
var i = 'yuanjianhang';
ฟังก์ชั่น mylovename () {
i = 'guanxi';
-
mylovename ();
ฟังก์ชั่น myname () {
การแจ้งเตือน (i);
-
myname ();
ครั้งนี้ผลลัพธ์คืออะไร?
คำตอบคือ guanxi
ก่อนอื่นค่าดั้งเดิมของฉันคือ Yuanjianhang แต่หลังจากเรียกฟังก์ชั่น mylovename () ค่าของฉันจะถูกเปลี่ยนเป็น guanxi ดังนั้นผลลัพธ์ผลลัพธ์สุดท้ายคือ Guanxi
หากคุณเปลี่ยนรหัสเป็น:
การคัดลอกรหัสมีดังนี้:
var i = 'yuanjianhang';
ฟังก์ชั่น mylovename () {
var i = 'guanxi';
-
mylovename ();
ฟังก์ชั่น myname () {
การแจ้งเตือน (i);
-
myname ();
ผลลัพธ์ในเวลานี้คือ Yuanjianhang เนื่องจากทั้งสองฉันอยู่ในรหัสแตกต่างกันหนึ่งเป็นระดับโลกและอีกอันเป็นท้องถิ่น นอกจากนี้ยังสามารถเข้าใจได้ด้วยวิธีนี้ แม้ว่าชื่อของทั้งสองฉันจะเหมือนกัน แต่สาระสำคัญของสองสิ่งนี้ฉันแตกต่างกันราวกับว่ามีคนสองคนที่มีชื่อเดียวกัน แม้ว่าชื่อจะเหมือนกัน แต่ก็ไม่ใช่คนเดียวกัน
หากคุณแปลงรหัสเป็นสิ่งนี้:
การคัดลอกรหัสมีดังนี้:
var i = 'yuanjianhang';
ฟังก์ชั่น mylovename () {
i = 'guanxi';
-
ฟังก์ชั่น myname () {
การแจ้งเตือน (i);
-
myname ();
mylovename ();
ฉันเชื่อว่าทุกคนสามารถเข้าใจผลลัพธ์ได้ด้วยตัวเองและผลลัพธ์คือ Yuanjianhang
เนื่องจากตัวแปรทั่วโลกสามารถเรียกได้ภายในฟังก์ชั่นสิ่งที่เกี่ยวกับสถานการณ์ต่อไปนี้:
การคัดลอกรหัสมีดังนี้:
var i = 'yuanjianhang';
ฟังก์ชั่น mylovename () {
i = 'guanxi';
การแจ้งเตือน (i);
-
mylovename ();
ตัวแปรใดในเวลานี้?
วิเคราะห์กันเถอะ:
ก่อนอื่นตัวแปรทั่วโลกที่ฉันได้รับมอบหมายเป็น: Yuanjianhang
ฟังก์ชั่น mylovename () ถัดไปเรียกว่าและตัวแปรส่วนกลางที่ฉันได้รับการกำหนดให้เป็นค่าใหม่: guanxi
ดังนั้นผลลัพธ์คือแน่นอน: guanxi
ถ้าเราตื่นตัวล่วงหน้าเช่นนี้:
การคัดลอกรหัสมีดังนี้:
var i = 'yuanjianhang';
ฟังก์ชั่น mylovename () {
การแจ้งเตือน (i);
i = 'guanxi';
-
mylovename ();
ผลลัพธ์ในเวลานี้คืออะไร?
ผลลัพธ์ที่ผ่านการตรวจสอบคือ: ไม่ได้กำหนด
ถ้ารหัสเป็นเช่นนี้:
การคัดลอกรหัสมีดังนี้:
var i = 'yuanjianhang';
ฟังก์ชั่น mylovename () {
การแจ้งเตือน (i);
-
mylovename ();
ผลลัพธ์ในเวลานี้คือ: Yuanjianhang
เหตุใดสถานการณ์ที่ไม่ได้กำหนดไว้ข้างต้นจึงเกิดขึ้น? เนื่องจากลำดับการดำเนินการของรหัสนั้นมาจากบนลงล่างและไม่มีคำจำกัดความของฉันก่อนที่จะส่งออก i ดังนั้นจากนี้เราจะเห็นได้ว่าเมื่อใช้รหัสการประกาศตัวแปรจะต้องวางไว้ที่ด้านหน้าของรหัสเพื่อหลีกเลี่ยงปัญหาที่คล้ายกัน!
ในทำนองเดียวกัน:
การคัดลอกรหัสมีดังนี้:
var i = 'yuanjianhang';
ฟังก์ชั่น mylovename () {
การแจ้งเตือน (i);
var i = 'guanxi';
-
mylovename ();
ในกรณีนี้มันจะส่งออก: undefined
โอเคฉันมีการแนะนำตัวมากมายเกี่ยวกับตัวแปรและฉันเชื่อว่าทุกคนสามารถเข้าใจสิ่งเหล่านี้ได้ ไม่ว่ารหัสจะถูกคัดลอกหลักจะไม่เปลี่ยนแปลง
ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ คุณมีความเข้าใจที่ลึกซึ้งยิ่งขึ้นเกี่ยวกับความแตกต่างระหว่างตัวแปรท้องถิ่นและตัวแปรทั่วโลกใน JavaScript หรือไม่? ขอให้มีความสุขในปีใหม่และมีความสุขในการศึกษา