[javascript] JavaScript의 Const : 언제 사용해야합니까?

최근 const에 JavaScript 에서 키워드를 발견했습니다. 내가 알 수있는 것에서 불변 변수 를 만드는 데 사용 되며 Node.js에서 변수를 다시 정의 할 수 없는지 테스트했습니다.

const x = 'const';
const x = 'not-const';

// Will give an error: 'constant 'x' has already been defined'

모든 브라우저에서 표준화되지는 않았지만 Node.js V8 의 컨텍스트에만 관심이 있으며 특정 개발자 / 프로젝트var키워드를 사용할 수있을 때 크게 선호하는 것으로 나타났습니다 . 같은 효과.

그래서 내 질문은 :

  • const대신에 var언제 사용해야 합니까?
  • 재할 당하지 않을 변수가 선언 될 때마다 사용해야합니까?
  • var대신 const또는 그 반대로 사용되는 경우 실제로 차이 가
    있습니까?


답변

귀하의 질문에는 두 가지 측면이 있습니다. const대신에 기술적 인 측면이 var무엇인지 , 그리고 인간과 관련된 측면은 무엇입니까?

기술적 인 차이가 중요합니다. 컴파일 된 언어에서, 상수는 컴파일 타임에 대체 될 것이며 데드 코드 제거와 같은 다른 최적화를 통해 코드의 런타임 효율성을 더욱 높일 수 있습니다. 최근에 많이 사용 된 용어 인 JavaScript 엔진은 실제로 더 나은 성능을 얻기 위해 JS 코드를 컴파일하므로 const 키워드를 사용하면 위에서 설명한 최적화가 가능하고 수행되어야 함을 알 수 있습니다. 결과적으로 성능이 향상됩니다.

인간과 관련된 측면은 키워드의 의미에 관한 것입니다. 변수는 변경 될 것으로 예상되는 정보가 포함 된 데이터 구조입니다. 상수는 절대 변하지 않는 정보를 포함하는 데이터 구조입니다. 오류의 여지가있는 경우 var항상 사용해야합니다. 그러나 프로그램 수명 기간 동안 절대 변하지 않는 모든 정보를로 선언 할 필요는 없습니다 const. 다른 상황에서 정보가 변경되어야 var하는 경우 실제 변경 사항이 코드에 나타나지 않더라도이를 나타 내기 위해 사용 하십시오.


답변

2017 년 업데이트

이 답변은 여전히 ​​많은 관심을 받고 있습니다. 이 답변은 2014 년 초에 게시되었으며 그 이후로 많은 변화가 있었다는 점에 주목할 가치가 있습니다.지원은 이제 표준입니다. 모든 최신 브라우저는 이제 지원 const하므로 문제없이 사용하는 것이 안전합니다.


2014 년 원문

상당히 괜찮은 브라우저 지원 에도 불구하고 지금은 사용하지 않는 것이 좋습니다. 에서 의 MDN의 기사const :

const의 현재 구현은 Mozilla 전용 확장이며 ECMAScript 5의 일부가 아닙니다. Firefox & Chrome (V8)에서 지원됩니다. Safari 5.1.7 및 Opera 12.00부터 이러한 브라우저에서 const를 사용하여 변수를 정의하면 나중에 해당 값을 변경할 수 있습니다. Internet Explorer 6-10에서는 지원되지 않지만 Internet Explorer 11에는 포함되어 있습니다. const 키워드는 현재 var로 선언 된 변수와 같이 함수 범위에서 상수를 선언합니다.

그런 다음 계속 말합니다.

constECMAScript 6에 의해 정의되지만 의미가 다릅니다. let 문으로 선언 된 변수와 유사하게 const로 선언 된 상수는 블록 범위가됩니다.

사용하는 경우 const약간 오래된 브라우저를 지원하려면 해결 방법을 추가해야합니다.


답변

const@Tibos의 답변 을 사용하는 이유는 훌륭합니다.

그러나 당신은 말했다 :

내가 알 수있는 것에서 불변의 변수를 만드는 데 사용됩니다.

잘못된 . 변수를 변경하는 것은 재 할당과 다릅니다.

var hello = 'world' // assigning
hello = 'bonjour!' // reassigning

const를 사용하면 그렇게 할 수 없습니다.

const hello = 'world'
hello = 'bonjour!' // error

그러나 변수를 변경할 수 있습니다.

const marks = [92, 83]
marks.push(95)
console.log(marks) // [92, 83, 95] -> the variable has been mutated.

따라서 부호 사용 하지 않고 변수 값을 변경하는 프로세스는 변수를 변경합니다 =.

참고 : +=예를 들어 … 재 할당입니다!

var a = 5
a += 2 // is the same as a = a + 2

결론은 다음과 같습니다. 변수 const변경 하지 못하게하고 변수를 다시 할당 하지 못하게 합니다.


답변

이전 답변을 통합하기 위해 성능상의 이유와는 별도로 상수 변수를 선언하면 명백한 이점이 있습니다. 실수로 코드에서 변수를 변경하거나 다시 선언하려고하면 프로그램이 각각 값을 변경하거나 오류를 발생시키지 않습니다.

예를 들어, 다음을 비교하십시오.

// Will output 'SECRET'

const x = 'SECRET'
if (x = 'ANOTHER_SECRET') {  // Warning! assigning a value variable in an if condition
    console.log (x)
}

와:

// Will output 'ANOTHER_SECRET'

var y = 'SECRET'
if (y = 'ANOTHER_SECRET') {
    console.log (y)
}

또는

// Will throw TypeError: const 'x' has already been declared

const x = "SECRET"

/*  complex code */

var x = 0

// Will reassign y and cause trouble

var y = "SECRET"

/*  complex code */

var y = 0


답변

const입니다 하지 불변.

로부터 MDN :

const 선언은 값에 대한 읽기 전용 참조를 만듭니다. 변수 식별자를 재 할당 할 수 없다는 것만으로 보유한 값이 변경 불가능하다는 의미는 아닙니다.


답변

var : 변수 선언, 값 초기화 옵션.

let : 블록 범위를 가진 지역 변수를 선언합니다.

const : 읽기 전용 명명 된 상수를 선언합니다.

전의:

var a;
a = 1;
a = 2;//re-initialize possible
var a = 3;//re-declare
console.log(a);//3

let b;
b = 5;
b = 6;//re-initiliaze possible
// let b = 7; //re-declare not possible
console.log(b);

// const c;
// c = 9;   //initialization and declaration at same place
const c = 9;
// const c = 9;// re-declare and initialization is not possible
console.log(c);//9
// NOTE: Constants can be declared with uppercase or lowercase, but a common
// convention is to use all-uppercase letters.


답변

당신은 큰 대답을 가지고 있지만 간단하게 유지합시다.

const 정의 된 상수가있을 때 사용해야합니다 (읽기 : 프로그램 실행 중에 변경되지 않음).

예를 들면 다음과 같습니다.

const pi = 3.1415926535

나중에 실행할 때 변경 될 수 있다고 생각되면를 사용하십시오 var.

예제를 기반으로 한 실제 차이점 const은 항상 파이가 3.14 […]라고 가정한다는 것입니다. 사실입니다.

로 정의하면 var3.14 […]가 될 수 있습니다.

더 기술적 인 답변을 원하시면 @Tibos가 학문적으로 옳습니다.