จาวาสคริปต์ const


สารบัญ

    แสดงสารบัญ


ECMAScript 2015 (ES6)

ในปี 2015 JavaScript ได้เปิดตัวคำหลักใหม่ที่สำคัญ: const

กลายเป็นเรื่องปกติในการประกาศอาร์เรย์โดยใช้ const:

ตัวอย่าง

const cars = ["Saab", "Volvo", "BMW"];

ลองด้วยตัวคุณเอง →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript const</h2>
<p id="demo"></p>

<script>

const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;

</script>
</body>
</html>

ไม่สามารถมอบหมายใหม่ได้

อาร์เรย์ที่ประกาศด้วย const ไม่สามารถกำหนดใหม่ได้:

ตัวอย่าง

const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"];    // ERROR

ลองด้วยตัวคุณเอง →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript const</h2>

<p>You can NOT reassign a constant array:</p>

<p id="demo"></p>

<script>
try {
  const cars = ["Saab", "Volvo", "BMW"];
  cars = ["Toyota", "Volvo", "Audi"];
}
catch (err) {
  document.getElementById("demo").innerHTML = err;
}
</script>

</body>
</html>

อาร์เรย์ไม่ใช่ค่าคงที่

คำหลัก const ทำให้เข้าใจผิดเล็กน้อย

มันไม่ได้กำหนดอาร์เรย์คงที่ มันกำหนดการอ้างอิงคงที่ไปยังอาร์เรย์

ด้วยเหตุนี้เราจึงยังคงสามารถเปลี่ยนองค์ประกอบของอาร์เรย์คงที่ได้


องค์ประกอบสามารถกำหนดใหม่ได้

คุณสามารถเปลี่ยนองค์ประกอบของอาร์เรย์คงที่:

ตัวอย่าง

// You can create a constant array:
const cars = ["Saab", "Volvo", "BMW"];

// You can change an element:
cars[0] = "Toyota";

// You can add an element:
cars.push("Audi");

ลองด้วยตัวคุณเอง →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript const</h2>

<p>Declaring a constant array does NOT make the elements unchangeable:</p>

<p id="demo"></p>

<script>
// Create an Array:
const cars = ["Saab", "Volvo", "BMW"];

// Change an element:
cars[0] = "Toyota";

// Add an element:
cars.push("Audi");

// Display the Array:
document.getElementById("demo").innerHTML = cars; 
</script>

</body>
</html>

รองรับเบราว์เซอร์

คำหลัก const ไม่ได้รับการสนับสนุนใน Internet Explorer 10 หรือรุ่นก่อนหน้า

ตารางต่อไปนี้กำหนดเบราว์เซอร์เวอร์ชันแรกที่รองรับคีย์เวิร์ด const อย่างสมบูรณ์:

Chrome 49 IE 11 / Edge Firefox 36 Safari 10 Opera 36
Mar, 2016 Oct, 2013 Feb, 2015 Sep, 2016 Mar, 2016

มอบหมายเมื่อมีการประกาศ

ตัวแปร JavaScript const จะต้องได้รับการกำหนดค่าเมื่อมีการประกาศ: <p>ความหมาย: อาร์เรย์ที่ประกาศด้วย const จะต้องเริ่มต้นเมื่อมีการประกาศ

การใช้ const โดยไม่เริ่มต้นอาร์เรย์ถือเป็นไวยากรณ์ ข้อผิดพลาด:

ตัวอย่าง

สิ่งนี้จะไม่ทำงาน:

const cars;
cars = ["Saab", "Volvo", "BMW"];

อาร์เรย์ที่ประกาศด้วย var สามารถเริ่มต้นได้ตลอดเวลา

คุณสามารถใช้อาร์เรย์ก่อนที่จะประกาศได้:

ตัวอย่าง

นี่เป็นเรื่องปกติ:

cars = ["Saab", "Volvo", "BMW"];
var cars;

ลองด้วยตัวคุณเอง →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>JavaScript Hoisting</h2>

<p id="demo"></p>

<script>

cars = ["Saab", "Volvo", "BMW"];
var cars;

document.getElementById("demo").innerHTML = cars[0];

</script>
</body>
</html>

ขอบเขตบล็อก Const

อาร์เรย์ที่ประกาศด้วย const มี Block Scope

อาร์เรย์ที่ประกาศในบล็อกไม่เหมือนกับอาร์เรย์ที่ประกาศนอกบล็อก:

ตัวอย่าง

const cars = ["Saab", "Volvo", "BMW"];
// Here cars[0] is "Saab"
{
  const cars = ["Toyota", "Volvo", "BMW"];
 
  // Here cars[0] is "Toyota"
}
// Here cars[0] is "Saab"

ลองด้วยตัวคุณเอง →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Declaring an Array Using const</h2>

<p id="demo"></p>

<script>
const cars = ["Saab", "Volvo", "BMW"];
// Here cars[0] is "Saab"
{  
  const cars = ["Toyota", "Volvo", "BMW"]; 
  // Here cars[0] is "Toyota"
}
// Here cars[0] is "Saab"
document.getElementById("demo").innerHTML = cars[0];
</script>

</body>
</html>

อาร์เรย์ที่ประกาศด้วย var ไม่มีขอบเขตบล็อก:

ตัวอย่าง

var cars = ["Saab", "Volvo", "BMW"];
// Here cars[0] is "Saab"
{
  var cars = ["Toyota", "Volvo", "BMW"];
 
  // Here cars[0] is "Toyota"
}
// Here cars[0] is "Toyota"

ลองด้วยตัวคุณเอง →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1> 
<h2>Declaring an Array Using var</h2>

<p id="demo"></p>

<script>
var cars = ["Saab", "Volvo", "BMW"];
// Here cars[0] is "Saab"
{  
  var cars = ["Toyota", "Volvo", "BMW"]; 
  // Here cars[0] is "Toyota"
}
// Here cars[0] is "Toyota"
document.getElementById("demo").innerHTML = cars[0];
</script>

</body>
</html>

คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับขอบเขตบล็อกได้ในบท: ขอบเขต JavaScript



การประกาศอาร์เรย์อีกครั้ง

การประกาศอาร์เรย์ที่ประกาศด้วย var อีกครั้งจะได้รับอนุญาตทุกที่ในโปรแกรม:

ตัวอย่าง

var cars = ["Volvo", "BMW"];   // Allowed
var cars = ["Toyota", "BMW"];  // Allowed
cars = ["Volvo", "Saab"];      // Allowed

การประกาศซ้ำหรือการกำหนดอาร์เรย์ใหม่เป็น const ในขอบเขตเดียวกันหรือใน ไม่อนุญาตให้ใช้บล็อกเดียวกัน:

ตัวอย่าง

var cars = ["Volvo", "BMW"];     // Allowed
const cars = ["Volvo", "BMW"];   // Not allowed
{
  var cars = ["Volvo", "BMW"];   // Allowed
  const cars = ["Volvo", "BMW"]; // Not allowed
}

การประกาศซ้ำหรือการกำหนดอาร์เรย์ const ที่มีอยู่ในขอบเขตเดียวกันหรือใน ไม่อนุญาตให้ใช้บล็อกเดียวกัน:

ตัวอย่าง

const cars = ["Volvo", "BMW"];   // Allowed
const cars = ["Volvo", "BMW"];   // Not allowed
var cars = ["Volvo", "BMW"];     // Not allowed
cars = ["Volvo", "BMW"];         // Not allowed

{
  const cars = ["Volvo", "BMW"]; // Allowed
  const cars = ["Volvo", "BMW"]; // Not allowed
  var cars = ["Volvo", "BMW"];   // Not allowed
  cars = ["Volvo", "BMW"];       // Not allowed
}

อนุญาตให้ประกาศอาร์เรย์อีกครั้งด้วย const ในขอบเขตอื่นหรือในบล็อกอื่น ได้รับอนุญาต:

ตัวอย่าง

const cars = ["Volvo", "BMW"];   // Allowed
{
  const cars = ["Volvo", "BMW"]; // Allowed
}
{
  const cars = ["Volvo", "BMW"]; // Allowed
}

การอ้างอิงอาร์เรย์ที่สมบูรณ์

หากต้องการข้อมูลอ้างอิง Array ฉบับสมบูรณ์ โปรดไปที่:

การอ้างอิงอาร์เรย์ JavaScript ที่สมบูรณ์

ข้อมูลอ้างอิงประกอบด้วยคำอธิบายและตัวอย่างของ Array ทั้งหมด คุณสมบัติและวิธีการ