능히 해낼 수 있다
230113 JS: 숙달을 위한 메모 - Variable(변수) 편 본문
✍️✍️✍️ 위 글은 작성자의 지식습득에 따라 추후 퇴고 될 수 있음을 알려드립니다(피드백 환영).
JavaScript에서는 변수를 선언하는 3가지 방법이 있다.
var, const, let 이 있는데,
현 시점으로서는 var를 사용하지 않는다.(정확히는 사용하지 않을 것을 권장한다.)
그 이유는 var는 변수 할당 하고 같은 변수이름으로
또 값을 재할당 가능하다는 가장 큰 리스크를 갖고 있기 때문이다.
같은 변수이름에 재할당이 가능하단 소리는
코드가 오천만줄이 됐을 때 똑같은 이름의 변수에 값이 몇개가 할당 됐을지 모를일이라는 것.
더 나아가 의도하지않는 변수 범위내에서 동작할 확률이 높고,
이게 개발자가 눈치채지 못할 수있기때문에 메모리 누수로 이어진다.
(이건 개발 지식이 없는 나도 끔찍한 상황이라는 건 알 것같다..⭐)
아무튼 위와 같은 이유로 undefined또는 Error반응을 하는 let과 const로 변수를 선언해 줘야한다.
그리고 var를 사용하는건 소위말하는 '레거시 코드'에 많으니 참고할 것.
const
작성방법 : const 이름 = 데이터;
const 특징
1. 블록 레벨 유효범위(Block-level scope) : 단어에 대한 개념은 다른 글에서 만나 뵙겠습니다.
2. 재할당 X
3. 중복 선언 X
4. 호이스팅 X : 단어에 대한 개념은 다른 글에서 만나 뵙겠습니다.
5. 전역 선언시 전역 객체의 속성으로 등록 X
예시
function fn() {
console.log(n) // ReferenceError!
if (true) {
//const n = 123 //다시 선언할 수 없음
n = 456 // TypeError!
console.log(n) // 123
const n = 'ABC' // SyntaxError!
}
console.log(n) // ReferenceError!
}
fn();
console.log(n) // ReferenceError!
const xyz = 'XYZ'
console.log(window.xyz) // undefined
let
작성방법 : let 이름 = 데이터;
let 특징
1. 블록 레벨 유효범위(Block-level scope) : 단어에 대한 개념은 다른 글에서 만나 뵙겠습니다.
2. 재할당 O
3. 중복 선언 X
4. 호이스팅 X : 단어에 대한 개념은 다른 글에서 만나 뵙겠습니다.
5. 전역 선언시 전역 객체의 속성으로 등록 X
예시
function fn() {
console.log(nn) // ReferenceError!
if (true) {
//let nn = 123
nn = 456
console.log(nn) // 456
let nn = 'ABC' // SyntaxError!
}
console.log(nn) // ReferenceError!
}
fn()
console.log(nn) // ReferenceError!
let xyzz = 'XYZ'
console.log(window.xyzz) // undefined
'개발🌐 > JavaScript' 카테고리의 다른 글
230114 JS: 숙달을 위한 메모 - Statement(~문) 편 (0) | 2023.01.14 |
---|---|
230113 JS: 숙달을 위한 메모 - Operator(연산자) 편 I (0) | 2023.01.13 |
230113 JS: 숙달을 위한 메모 - String(문자) 편 (0) | 2023.01.13 |
230113 JS: 숙달을 위한 메모 - Number(숫자) 편 (0) | 2023.01.13 |
230113 JS: 숙달을 위한 메모 - Array(배열) 편 II (0) | 2023.01.13 |