ECMAScript 2015 (= ES2015 = ES6) 때 도입
1.
변수 선언 키워드 2개 새로 도입
const , let
2.
const : 데이터 재할당 X (그외는 let과 유사)
let : 데이터 재할당 O.
[const 사용 장점]
・Security (보안) : 해커가 값 변경하는 걸 방지.
・Thread Safety : 프로세스 안의 여러 thread가 변수 접근할 때 안전.
・Reduce Human Mistakes : 개발자 실수를 줄여줌.
[참고]
JavaScript = ECMAScript + BOM(Browser Object Model) + DOM(Document Object Model)
※ 즉, JS = (1코어 + 2모델)로 구성된 웹언어
ECMAScript (이하 ES)
JS 구성 코어(Core)스크립트 언어로써, 다양한 환경에서 운용될 수 있게 확장성이 뛰어난 웹언어.
더 자세한 정보는 여기 참고
const 예제
<p id="demo"></p>
<script>
try {
const hz = '홈짱닷컴';
hz = 'Homzzang.com'; // const로 앞서 정의된 변수라 에러 발생
hz = hz + 'Homzzang.com'; // const로 앞서 정의된 변수라 에러 발생
}
catch (err) {
document.getElementById("demo").innerHTML = err;
}
</script>
결과보기
TypeError: Assignment to constant variable.
const 특징1 : 블럭 경계 안에서만 유효
<p id="hz"></p>
<script>
var x = "홈짱닷컴";
{
const x = "Homzzang.com";
}
document.getElementById("hz").innerHTML = x;
</script>
결과보기
홈짱닷컴
const 특징2 - 선언과 동시에 값이 할당돼야 함.
const hz = '홈짱닷컴';
[바람직 X]
const hz;
hz = '홈짱닷컴';
const 특징3 - 진짜 상수를 정의하는 건 아님.
1.
const 키워드는 상수 (a constant value)를 정의하는 것이 아니라,
값에 대한 항구적인 참조 자체 (a constant reference to a value)를 정의하는 것임.
2.
이런 성격때문에,
항구적인 기초값 (constant primitive values)을 변경할 순 없지만,
항구적인 객체의 속성 (the properties of constant objects) 변경은 가능.
const 특징4 - 기초값 변경 불가
<p id="demo"></p>
<script>
try {
const hz = '홈짱닷컴';
hz = 'Homzzang.com'; // const로 앞서 정의된 변수라 에러 발생
hz = hz + 'Homzzang.com'; // const로 앞서 정의된 변수라 에러 발생
}
catch (err) {
document.getElementById("demo").innerHTML = err;
}
</script>
결과보기
TypeError: Assignment to constant variable.
PS.
엘리 님 (JS 3. var, let, const 차이) 강의
https://youtu.be/OCCpGh4ujb8