ในบางภาษาการเขียนโปรแกรม C-like รหัสแต่ละชิ้นในการจัดฟันแบบโค้งมีขอบเขตของตัวเองและตัวแปรจะมองไม่เห็นนอกส่วนรหัสที่ประกาศพวกเขา เราเรียกขอบเขตบล็อกและไม่มีขอบเขตบล็อกใน JavaScript แต่ JavaScript ใช้ขอบเขตฟังก์ชัน: ตัวแปรถูกกำหนดไว้ในร่างกายฟังก์ชั่นที่ประกาศและฟังก์ชั่นใด ๆ ที่ซ้อนกันในร่างกายฟังก์ชั่น ในรหัสต่อไปนี้ I, J และ K ที่กำหนดไว้ในตำแหน่งต่าง ๆ ถูกกำหนดไว้ในขอบเขตเดียวกัน
การคัดลอกรหัสมีดังนี้:
ข้อความฟังก์ชัน (O)
-
var i = 0;
การแจ้งเตือน (typeof o);
if (typeof o == "String")
-
var j = 0;
สำหรับ (var k = 0; k <10; k ++)
-
การแจ้งเตือน (k); // output 0-9
-
การแจ้งเตือน (k); // output 10
-
Alert (J); // output 0
-
ขอบเขตฟังก์ชั่นของ JavaScript หมายความว่าตัวแปรทั้งหมดที่ประกาศภายในฟังก์ชั่นสามารถมองเห็นได้ในตัวฟังก์ชั่น ที่น่าสนใจนั่นหมายความว่าตัวแปรมีให้ก่อนที่จะมีการประกาศ คุณลักษณะของ JavaScript นี้เรียกว่า Hoisting อย่างไม่เป็นทางการนั่นคือตัวแปรทั้งหมดที่ประกาศในฟังก์ชั่นของ JavaScript (ไม่มีการมอบหมายที่เกี่ยวข้อง) เป็น "ขั้นสูง" ที่ด้านบนของร่างกายฟังก์ชั่น ดูรหัสต่อไปนี้
การคัดลอกรหัสมีดังนี้:
var global = "globas";
ฟังก์ชั่น Globals ()
-
Alert (Global); // undefined
var global = "สวัสดี qdao";
การแจ้งเตือน (ทั่วโลก); // สวัสดี Qdao
-
เนื่องจากธรรมชาติของขอบเขตการทำงานตัวแปรท้องถิ่นจะถูกกำหนดไว้ตลอดทั้งตัวฟังก์ชั่นซึ่งหมายความว่าตัวแปรภายในตัวแปรตัวแปรทั่วโลกที่มีชื่อเดียวกัน อย่างไรก็ตามเรื่องนี้ตัวแปรท้องถิ่นจะได้รับการกำหนดอย่างแท้จริงเมื่อโปรแกรมดำเนินการคำสั่ง VAR ดังนั้นกระบวนการข้างต้นจะเทียบเท่ากับ: ประกาศตัวแปรในฟังก์ชั่น "ล่วงหน้า" ไปที่ด้านบนของร่างกายฟังก์ชั่นและออกจากการเริ่มต้นของตัวแปรเพื่อนร่วมงานในตำแหน่งเดิม:
การคัดลอกรหัสมีดังนี้:
var global = "globas";
ฟังก์ชั่น Globals ()
-
var global;
Alert (Global); // undefined
Global = "Hello Qdao";
การแจ้งเตือน (ทั่วโลก); // สวัสดี Qdao
-