ซึ่งแตกต่างจากภาษาการเขียนโปรแกรมเช่น C และ Java ตัวแปรใน JavaScript นั้นไม่มีประเภทและคำจำกัดความตัวแปรทั้งหมดใช้คำหลัก VAR:
การคัดลอกรหัสมีดังนี้:
var a;
var m, n;
var x = 42, y = "ทดสอบ";
หากตัวแปรไม่ได้กำหนดค่าหลังจากกำหนดค่าของตัวแปรจะไม่ได้กำหนด ตัวอย่างเช่นค่าของตัวแปรทั้งสามตัว A, M และ N ในรหัสข้างต้นไม่ได้กำหนด
เนื่องจากตัวแปรใน JS ไม่มีประเภทจึงเป็นไปได้ที่จะกำหนดค่าประเภทต่าง ๆ ให้กับตัวแปรเดียวกันเช่น:
การคัดลอกรหัสมีดังนี้:
var b = "อุณหภูมิ";
console.log (typeof b); // string
b = 108;
console.log (typeof b); // number
นอกเหนือจากประเภทของการกำหนดที่แตกต่างกันไปยังตัวแปรเดียวกันแล้วตัวแปรยังสามารถกำหนดได้ซ้ำ ๆ ใน JavaScript; หากทำเช่นนี้คำสั่งนิยามตัวแปรหลังจากครั้งแรกจะเทียบเท่ากับคำสั่งการมอบหมาย:
การคัดลอกรหัสมีดังนี้:
var c = "สวัสดี";
console.log (c); // สวัสดี
var c = true;
console.log (c); // true
ภายใต้โหมดที่เข้มงวดของมาตรฐาน ECMASCRIPT คำจำกัดความตัวแปรทั้งหมดจำเป็นต้องใช้คำหลัก VAR หากไม่ได้ใช้โหมดที่เข้มงวดเมื่อโปรแกรม JS กำหนดค่าให้กับตัวแปรที่ไม่ได้กำหนดโปรแกรมจะสร้างคุณสมบัติในวัตถุ JS Global ที่มีชื่อเดียวกับตัวแปรนั่นคือสร้างตัวแปรส่วนกลางใหม่ วิธีการนี้จะนำปัญหามากมาย (เช่นมลพิษตัวแปรทั่วโลกระหว่างโปรแกรม JS หลายรายการ ฯลฯ ) ซึ่งจะทำให้เกิดปัญหาอย่างมากในการบำรุงรักษาในภายหลัง ดังนั้นในกระบวนการพัฒนาที่แท้จริงควรหลีกเลี่ยงวิธีการนี้ให้มากที่สุด
การจัดเก็บตัวแปร
หากตัวแปรที่กำหนดเป็นตัวแปรส่วนกลางและคีย์เวิร์ด VAR ไม่ได้ใช้ในระหว่างกระบวนการนิยามตัวแปรตัวแปรจะมีอยู่เป็นคุณสมบัติของวัตถุทั่วโลก สามารถรับได้โดยการเข้าถึงคุณสมบัติที่เกี่ยวข้องของสิ่งนี้ (วัตถุทั่วโลก) หรือสามารถลบออกจากวัตถุส่วนกลางโดยใช้คำหลักลบ:
การคัดลอกรหัสมีดังนี้:
var e = "GlobalVariableValue"; // ที่กำหนดไว้นอกฟังก์ชั่นใด ๆ มันเป็นตัวแปรระดับโลก แต่ไม่ได้เก็บไว้ใน "this"
f = "GlobalVariableValue2";
this.g = "GlobalVariableValue3";
console.log (this.e); // undefined
console.log (this.f); // globalvariablevalue2
console.log (this.g); // globalvariablevalue3
ลบ F;
ลบ g;
console.log (this.f); // undefined
console.log (this.g); // undefined
สำหรับการเรียกใช้ฟังก์ชั่นแต่ละรายการใน JavaScript JavaScript จะสร้างวัตถุท้องถิ่นเพื่อจัดเก็บตัวแปรท้องถิ่นที่กำหนดไว้ในฟังก์ชั่น หากมีฟังก์ชั่นซ้อนอยู่ภายในฟังก์ชั่น JavaScript จะกำหนดวัตถุท้องถิ่นที่ซ้อนกันภายในวัตถุท้องถิ่นที่กำหนดไว้แล้ว สำหรับฟังก์ชั่นมีคำจำกัดความฟังก์ชั่นซ้อนกันหลายชั้นเช่นเดียวกับที่มีหลายชั้นของวัตถุท้องถิ่นที่ซ้อนกันเช่นเดียวกับที่มี วัตถุท้องถิ่นนี้เรียกว่า "ฟังก์ชั่นการเรียกวัตถุ" ("วัตถุเรียก" ใน eCmascript 3 และถูกเปลี่ยนชื่อ "บันทึกสภาพแวดล้อมที่ประกาศ" ใน ECMAScript 5 แต่โดยส่วนตัวฉันคิดว่าชื่อใน ECMASCRIPT 3 นั้นง่ายต่อการเข้าใจ)
ในทางตรงกันข้ามกับวัตถุทั่วโลกนี้ JavaScript ไม่ได้ให้วิธีใด ๆ ในการเข้าถึงวัตถุท้องถิ่นเหล่านี้ (วัตถุเรียกใช้ฟังก์ชัน) ดังนั้นนักพัฒนาจึงไม่สามารถทำงานกับวัตถุท้องถิ่นเหล่านี้ได้ อย่างไรก็ตามการทำความเข้าใจกับฟังก์ชันการเรียกวัตถุเหล่านี้จะช่วยได้อย่างมากในการทำความเข้าใจแนวคิดบางอย่างในจาวาสคริปต์เช่นขอบเขตและการปิดตัวแปร