Javascript Essentials 1
깔끔하고 안전하게 리액트 코드를 작성할 수 있도록 자바스크립트, 특히 ES6 문법 중 자주 다루게 되는 부분들을 알아봅시다.
[변수] var를 지양하고, let과 const를 사용하자
var의 문제점 1 : 재선언과 재할당이 모두 가능하다
var name = '찰스';
var name = '김보인';
console.log(name);
// 결과 : 에러가 발생하지 않고, '김보인'이 출력됨
var의 문제점 2 : 함수 스코프(function scope)를 따른다.
var global = '전역';
if (global === '전역') {
var global = '지역';
console.log(global); // '지역'이 출력됨
}
console.log(global); // 전역변수가 오염되어 '지역'이 출력됨
var의 문제점 3 : 호이스팅 시 undefined로 변수를 초기화한다.
console.log(num); // undefined가 출력됨
var num; // 선언
num = 6; // 초기화
호이스팅은 무조건 나쁜 것일까?
변수 호이스팅은 엄격히 지양된다. 함수 호이스팅과 관련해서는 아래의 예제를 보며 고민해보자.
function onClickButton () {
getData();
}
function getData () {
}
let은 재선언은 불가, 재할당은 가능! const는 둘 다 불가
let name = '찰스';
let name = '김보인';
console.log(name); // 에러발생('name' has already been declared)
let num = 100;
num = 1;
console.log(num); // 1이 출력됨(let은 재할당 가능)
const num2 = 100;
num2 = 1;
console.log(num2); // 에러발생(Assignment to constant variable)
const grade = {
math: 100,
korean: 85,
}
grade.math = 0;
grade.korean = 100;
console.log(grade); // {"math":0,"korean":100}이 출력됨
let과 const는 블록 스코프(block scope)를 따름
let global = '전역';
if (global === '전역') {
let global = '지역';
console.log(global); // '지역'이 출력됨
}
console.log(global); // '전역'이 출력됨
// const도 동일한 결과가 출력됨
let과 const는 변수 호이스팅 불가
console.log(num); // 에러발생(Cannot access 'num' before initialization)
let num;
num = 6;
// const도 동일한 결과가 출력됨
Last updated