JavaScript Let
คำlet
หลักถูกนำมาใช้ใน
ES6 (2015 )
ตัวแปรที่กำหนดด้วยlet
ไม่สามารถประกาศซ้ำได้
let
ต้องประกาศตัวแปรที่กำหนดด้วย ก่อนใช้งาน
ตัวแปรที่กำหนดด้วยlet
มี Block Scope
ไม่สามารถประกาศได้
ตัวแปรที่กำหนดด้วยlet
ไม่สามารถประกาศใหม่ได้
คุณไม่สามารถประกาศตัวแปรซ้ำโดยไม่ได้ตั้งใจ
ด้วยlet
คุณไม่สามารถทำสิ่งนี้ได้:
ตัวอย่าง
let x = "John Doe";
let x = 0;
// SyntaxError: 'x' has already been declared
ด้วยvar
คุณสามารถ:
ตัวอย่าง
var x = "John Doe";
var x = 0;
บล็อกขอบเขต
ก่อน ES6 (2015) JavaScript มีเพียงGlobal Scope and Function Scope
ES6 แนะนำคำหลัก JavaScript ใหม่ที่สำคัญสองคำ: let
และconst
.
คำหลักสองคำนี้มีขอบเขตการบล็อกใน JavaScript
ตัวแปรที่ประกาศภายในบล็อก { } ไม่สามารถเข้าถึงได้จากภายนอกบล็อก:
ตัวอย่าง
{
let x = 2;
}
// x can NOT be used here
ตัวแปรที่ประกาศด้วยvar
คีย์เวิร์ดไม่สามารถมีขอบเขตการบล็อกได้
ตัวแปรที่ประกาศภายในบล็อก { } สามารถเข้าถึงได้จากภายนอกบล็อก
ตัวอย่าง
{
var x = 2;
}
// x CAN be used here
ประกาศตัวแปรใหม่
การประกาศตัวแปรใหม่โดยใช้var
คีย์เวิร์ดสามารถกำหนดปัญหาได้
การประกาศตัวแปรภายในบล็อกอีกครั้งจะเป็นการประกาศตัวแปรนอกบล็อกอีกครั้ง:
ตัวอย่าง
var x = 10;
// Here x is 10
{
var x = 2;
// Here x is 2
}
// Here x is 2
การประกาศตัวแปรใหม่โดยใช้let
คีย์เวิร์ดสามารถแก้ปัญหานี้ได้
การประกาศตัวแปรภายในบล็อกใหม่จะไม่ประกาศตัวแปรนอกบล็อกซ้ำ:
ตัวอย่าง
let x = 10;
// Here x is 10
{
let x = 2;
// Here x is 2
}
// Here x is 10
รองรับเบราว์เซอร์
คำlet
หลักไม่ได้รับการสนับสนุนอย่างสมบูรณ์ใน Internet Explorer 11 หรือรุ่นก่อนหน้า
ตารางต่อไปนี้กำหนดเบราว์เซอร์รุ่นแรกที่มีการสนับสนุนอย่างเต็มที่สำหรับlet
คำหลัก:
Chrome 49 | Edge 12 | Firefox 44 | Safari 11 | Opera 36 |
Mar, 2016 | Jul, 2015 | Jan, 2015 | Sep, 2017 | Mar, 2016 |
ประกาศซ้ำ
อนุญาตให้ประกาศตัวแปร JavaScript อีกครั้งด้วยvar
ที่ใดก็ได้ในโปรแกรม:
ตัวอย่าง
var x = 2;
// Now x is 2
var x = 3;
// Now x is 3
ด้วยlet
ไม่อนุญาตให้ประกาศตัวแปรซ้ำในบล็อกเดียวกัน:
ตัวอย่าง
var x = 2; // Allowed
let x = 3; // Not allowed
{
let x = 2; // Allowed
let x = 3 // Not allowed
}
{
let x = 2; // Allowed
var x = 3 // Not allowed
}
การประกาศตัวแปรlet
ใหม่ด้วย ในบล็อกอื่น อนุญาตให้ IS:
ตัวอย่าง
let x = 2; // Allowed
{
let x = 3; // Allowed
}
{
let x = 4; // Allowed
}
ให้รอก
ตัวแปรที่กำหนดด้วยvar
จะถูกยกขึ้นด้านบนและสามารถเริ่มต้นได้ตลอดเวลา
ความหมาย: คุณสามารถใช้ตัวแปรก่อนที่จะมีการประกาศ:
ตัวอย่าง
ไม่เป็นไร:
carName = "Volvo";
var carName;
หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการติตตั้ง ให้ศึกษาบทที่JavaScript Hoisting
ตัวแปรที่กำหนดด้วยlet
จะถูกยกขึ้นที่ด้านบนของบล็อกด้วย แต่ไม่ได้เริ่มต้น
ความหมาย: การใช้let
ตัวแปรก่อนที่จะประกาศจะส่งผลให้
ReferenceError
:
ตัวอย่าง
carName = "Saab";
let carName = "Volvo";