Const ใน JavaScript
- หน้าก่อนหน้า JS Let
- หน้าต่อไป ตัวตัวการ JS
ECMAScript 2015
ES2015 ได้นำเข้าคำศัพท์ที่สำคัญสองคำของ JavaScript ใหม่:let
และ const
.
ผ่าน const
ตัวแปรที่ถูกกำหนด let
ตัวแปรที่ถูกกำหนด
ตัวอย่าง
const PI = 3.141592653589793; PI = 3.14; // จะผิดพลาดด้วย PI = PI + 10; // จะผิดพลาดด้วย
บล็อคสโครป
ในบล็อคสโครปในในบล็อค const
ตัวแปรที่ประกาศ let
ตัวแปรเหมือนกัน
ในตัวอย่างนี้ x ถูกประกาศในบล็อค ต่างกับ x ที่ประกาศนอกบล็อค:
ตัวอย่าง
var x = 10; // ที่นี้ x คือ 10 { const x = 6; // ที่นี้ x คือ 6 } // ที่นี้ x คือ 10
ในบทก่อนหน้านี้ Let ใน JavaScript ในช่วงเรียนเรื่องบล็อคสโครป
ในตอนประกาศ
JavaScript const
ตัวแปรต้องมีค่าที่เปิดเผยในตอนประกาศ:
ผิด
const PI; PI = 3.14159265359;
ถูกต้อง
const PI = 3.14159265359;
ไม่ใช่คงที่ที่แท้จริง
คำศัพท์ const
มีความทำให้ผิดใจบางประการ
มันไม่ได้รับค่าคงที่ มันได้รับอ้างอิงคงที่ของค่า
ดังนั้น เราจะไม่สามารถเปลี่ยนค่าตัวต้นแบบของคงที่ แต่เราสามารถเปลี่ยนคุณสมบัติของวัตถุคงที่ได้。
ค่าตัวต้นแบบ
ถ้าเราสร้างค่าตัวต้นแบบให้กับคงที่ เราจะไม่สามารถเปลี่ยนค่าตัวต้นแบบ:
ตัวอย่าง
const PI = 3.141592653589793; PI = 3.14; // จะผิดพลาดด้วย PI = PI + 10; // จะผิดพลาดด้วย
วัตถุคงที่สามารถเปลี่ยน:
สามารถเปลี่ยนคุณสมบัติของวัตถุคงที่ได้:
ตัวอย่าง
// สามารถสร้างวัตถุ const ได้: const car = {type:"porsche", model:"911", color:"Black"}; // สามารถเปลี่ยนคุณสมบัติได้: car.color = "White"; // 您可以添加属性: car.owner = "Bill";
但是您无法重新为常量对象赋值:
ตัวอย่าง
const car = {type:"porsche", model:"911", color:"Black"}; car = {type:"Volvo", model:"XC60", color:"White"}; // ERROR
常量数组可以更改
您可以更改常量数组的元素:
ตัวอย่าง
// 您可以创建常量数组: const cars = ["Audi", "BMW", "porsche"]; // 您可以更改元素: cars[0] = "Honda"; // 您可以添加元素: cars.push("Volvo");
但是您无法重新为常量数组赋值:
ตัวอย่าง
const cars = ["Audi", "BMW", "porsche"]; cars = ["Honda", "Toyota", "Volvo"]; // ERROR
浏览器支持
Internet Explorer 10 或更早版本不支持 const
关键词。
下表定义了第一个完全支持 const 关键词的浏览器版本:
Chrome 49 | IE / Edge 11 | Firefox 36 | Safari 10 | Opera 36 |
2016 年 3 月 | 2013 年 10 月 | 2015 年 2 月 | 2016 年 9 月 | 2016 年 3 月 |
重新声明
在程序中的任何位置都允许重新声明 JavaScript var
变量:
ตัวอย่าง
var x = 2; // อนุญาต var x = 3; // อนุญาต x = 4; // อนุญาต
在同一作用域或块中,不允许将已有的 var
或 let
变量重新声明或重新赋值给 const
:
ตัวอย่าง
var x = 2; // อนุญาต const x = 2; // ไม่อนุญาต { let x = 2; // อนุญาต const x = 2; // ไม่อนุญาต }
在同一作用域或块中,为已有的 const 变量重新声明声明或赋值是不允许的:
ตัวอย่าง
const x = 2; // อนุญาต const x = 3; // ไม่อนุญาต x = 3; // ไม่อนุญาต var x = 3; // ไม่อนุญาต let x = 3; // ไม่อนุญาต { const x = 2; // อนุญาต const x = 3; // ไม่อนุญาต x = 3; // ไม่อนุญาต var x = 3; // ไม่อนุญาต let x = 3; // ไม่อนุญาต }
ประกาศใหม่ในโซนหน้าที่หลัก const
เป็นที่อนุญาต
ตัวอย่าง
const x = 2; // อนุญาต { const x = 3; // อนุญาต } { const x = 4; // อนุญาต }
นำขึ้นมายังด้านบน
ผ่าน var
ตัวแปรที่ถูกประกาศจะถูกนำขึ้นมายังด้านบนไปยังด้านบน ถ้าคุณไม่เข้าใจว่าเป็นการนำขึ้นมายังด้านบน (Hoisting) โปรดเรียนบทดังกล่าว
คุณสามารถใช้ตัวแปร var ก่อนการประกาศ
ตัวอย่าง
carName = "Volvo"; // คุณสามารถใช้ carName ที่นี่ได้ var carName;
ผ่าน const
ตัวแปรที่ถูกประกาศจะไม่ถูกนำขึ้นมายังด้านบน
const
ตัวแปรไม่สามารถใช้ก่อนการประกาศ
ตัวอย่าง
carName = "Volvo"; // คุณไม่สามารถใช้ carName ที่นี่ได้ const carName = "Volvo";
- หน้าก่อนหน้า JS Let
- หน้าต่อไป ตัวตัวการ JS