JavaScript Let ตัวแปรที่กำหนดด้วยคีย์เวิร์ด let ไม่สามารถประกาศชื่อซ้ำได้
ตัวแปรที่ประกาศด้วยคีย์เวิร์ด let ไม่สามารถประกาศชื่อซ้ำในบล็อกนั้นๆได้
ตัวแปรที่ประกาศด้วยคีย์เวิร์ด let ต้องประกาศก่อนใช้งานเสมอ
ตัวแปรที่ประกาศด้วยคีย์เวิร์ด let เป็น Block Scope
let x = "Theethawat Chetjeerasioon";
let x = 0;
// Syntax Error นะ เพราะตัวแปร x ได้ถูกประกาศไปแล้ว
แต่ถ้าต้องการกำหนดค่าให้กับตัวแปรเดิมให้ใช้คีย์เวิร์ด var ในการประกาศตัวแปร
var x = "Theethawat Chetjeerasioon";
var x = 0;
JavaScript Let ใน Block Scope
ตั้งแต่ ES6 (2015) JavaScript มีเพียง Global Scope และ Function Scope
คีย์เวิร์ด let และ const ไม่สามารถใช้นอกบล็อกได้
{
let x = 55;
}
// x ไม่สามารถใช้นอกบล็อกได้ เพราะเราประกาศ x ด้วยคีย์เวิร์ด let
แต่ถ้าต้องการใช้ x นอกบล็อดด้วย ก็ให้ประกาศตัวแปร x ด้วยคีย์เวิร์ด var แทน
{
var x = 55;
}
การประกาศตัวแปรใหม่
การประกาศตัวแปรใหม่โดยใช้คีย์เวิร์ด var อาจสร้างปัญหาให้กับเราได้ ต้องดูดีๆ ก่อนจะประกาศตัวแปรด้วยคีย์เวิร์ด var
var x = 55;
// x มีค่าเท่ากับ 55
{
var x = 77;
// x มีค่าเท่ากับ 77
}
// ถ้าเราเรียกใช้ตัวแปร x ตรงนี้ x จะมีค่าเท่ากับ 77 นะ เพราะเราได้กำหนดค่าใหม่ให้กับตัวแปร x แล้ว
เราสามารถแก้ปัญหานี้ด้วยการใช้คีย์เวิร์ด let
var x = 55;
// x มีค่าเท่ากับ 55
{
let x = 77;
// x มีค่าเท่ากับ 77
}
// ถ้าเราเรียกใช้ตัวแปร x ตรงนี้ x จะมีค่าเท่ากับ 55
การประกาศซ้ำ
สามารถประกาศซ้ำที่ไหนก็ได้ด้วยคีย์เวิร์ด var
var x = 55;
// x เท่ากับ 55
var x = 77;
// x เท่ากับ 77
คีย์เวิร์ด let ไม่สามารถประกาศตัวแปรชื่อซ้ำในบล็อกเดียวกันได้
var x = 55; // ทำได้
let x = 77; // ทำไม่ได้
{
let x = 55; // ทำได้
let x = 77; // ทำไม่ได้
}
{
let x = 55; // ทำได้
var x = 77; // ทำไม่ได้
}
การประกาศตัวแปรใหม่ด้วยคีย์เวิร์ด let ในบล็อกอื่นๆ
let x = 55; // ทำได้
{
let x = 77; // ทำได้
}
{
let x = 99; // ทำได้
}