บทความนี้กล่าวถึงความแตกต่างระหว่าง VAR และไม่มี VAR ใน JavaScript ขอบเขตของการประกาศตัวแปรใน JS ขึ้นอยู่กับฟังก์ชั่นดังนั้นเรามักจะเห็นวิธีหลีกเลี่ยงมลพิษตัวแปรทั่วโลก
(การทำงาน(){ // ... })();ภายในฟังก์ชั่นตัวแปรที่มี var และไม่มี var แตกต่างกัน มี VARs ที่ประกาศตัวแปรท้องถิ่นและไม่มี VARs ประกาศตัวแปรทั่วโลกเพื่อให้คุณสามารถเปิดเผยสิ่งที่เชื่อมต่อกับภายนอกได้
เมื่อประกาศตัวแปรในขอบเขตส่วนกลาง VAR และ VAR จะเหมือนกัน เรารู้ว่าตัวแปรทั่วโลกที่ประกาศเป็นคุณสมบัติของ Windows ไม่ว่าจะเหมือนกันเราค้นพบความแตกต่างผ่านวิธีการสืบค้นแอตทริบิวต์ที่จัดทำโดย ECMASCRPIT5
var ffff = 2; window.fffa = 3; ffb = 4; this.ffc = 4; var fftx = object.getownpropertydescriptor (หน้าต่าง, 'ffff'); // กำหนดค่าได้: เท็จ, enumerable: จริง, ค่า: 2, เขียนได้: จริง var ffatx = object.getownpropertydescriptor (หน้าต่าง, 'fffa'); // กำหนดค่าได้: จริง, enumerable: จริง, ค่า: 2, เขียนได้: จริง var ffbtx = object.getownpropertydescriptor (หน้าต่าง, 'fffa'); // กำหนดค่าได้: จริง, enumerable: จริง, ค่า: 2, เขียนได้: จริง var ffbtx = object.getownpropertydescriptor (หน้าต่าง, 'ffb'); // กำหนดค่าได้: จริง, enumerable: จริง, ค่า: 2, เขียนได้: จริง var ffctx = object.getownpropertydescriptor (หน้าต่าง, 'ffc'); // กำหนดค่าได้: จริง, enumerable: จริง, ค่า: 2, เขียนได้: จริง
จากข้างต้นเราพบว่ายังมีความแตกต่าง เราใช้ลบเพื่อตรวจสอบว่าแอตทริบิวต์ที่มีการกำหนดค่าเท็จไม่สามารถลบได้ นั่นคือคุณสมบัติของวัตถุทั่วโลกที่ประกาศผ่านตัวแปร var ไม่สามารถลบได้ นอกจากนี้เรายังจะพบว่าคุณสมบัติของวัตถุทั่วโลกที่สร้างขึ้นโดยการประกาศฟังก์ชั่นไม่สามารถลบได้
ลบ ffff; // ไม่สามารถลบลบ fffa; // สามารถลบลบ FFB; // สามารถลบลบ FFC; // สามารถลบได้
ข้อสรุปคือมีความแตกต่างระหว่างการเพิ่ม VAR และการประกาศตัวแปรส่วนกลางโดยไม่ต้อง var
มันถูกกฎหมายและไม่เป็นอันตรายที่จะประกาศคำสั่งซ้ำ ๆ โดยใช้คำสั่ง VAR หากการประกาศซ้ำแล้วซ้ำอีกและมีการมอบหมายงานจะไม่แตกต่างจากคำสั่งการมอบหมายทั่วไป หากคุณพยายามอ่านตัวแปรที่ยังไม่ได้รับการประกาศ JS จะรายงานข้อผิดพลาด
ตัวแปรที่ประกาศหรือฟังก์ชั่นภายในภายในขอบเขตของจาวาสคริปต์สามารถมองเห็นได้ในตัวฟังก์ชั่น ความหมายฟังก์ชั่นอาจมีอยู่แล้วก่อนที่จะมีการกำหนด มีสองวิธีในการกำหนดฟังก์ชั่นหนึ่งคือนิพจน์นิยามฟังก์ชั่นและอีกวิธีหนึ่งคือคำสั่งการประกาศฟังก์ชั่น
// ฟังก์ชั่นนิยามฟังก์ชันนิพจน์ var fns = function () {// ... }; // ฟังก์ชั่นคำสั่งประกาศฟังก์ชั่น fns () {// ... }คำสั่งการประกาศฟังก์ชั่น "เป็นขั้นสูง" ไปที่ด้านบนของสคริปต์ภายนอกหรือขอบเขตฟังก์ชันภายนอกดังนั้นฟังก์ชันที่ประกาศด้วยวิธีนี้สามารถเรียกใช้รหัสที่ปรากฏก่อนหน้านี้อีกครั้ง ในนิพจน์นิยามฟังก์ชั่นการประกาศของตัวแปรนั้นสูงมาก แต่การกำหนดตัวแปรไม่ได้สูงขึ้นดังนั้นฟังก์ชั่นที่กำหนดในนิพจน์ไม่สามารถเรียกได้ก่อนนิยามฟังก์ชั่น
(function () {testa (); // พิมพ์ testa testb (); // รายงานข้อผิดพลาด: มันได้รับแจ้งว่า undefined ไม่ใช่ฟังก์ชันคอนโซล log (testc); // undefined ถ้าย้ายไปด้านบน "testc";}) ();แน่นอนเมื่อเราประกาศตัวแปรและฟังก์ชั่นเราต้องปฏิบัติตามข้อกำหนดพื้นฐานและตัวแปรและการประกาศฟังก์ชั่นจะต้องล่วงหน้า