JavaScript Const

ECMAScript 2015

ES2015 引入了两个重要的 JavaScript 新关键词:letconst

을 통해 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

직접 시도해 보세요

您可以在上一章 JavaScript Let 中学到更多有关块作用域的知识。

在声明时赋值

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";