
React에는 ES6 이후의 문법이 적용되므로(React documentation에서는 독자들이 최신 ES 문법을 잘 알고 있을 것이라고 가정한다고 한다) React를 잘 알기 위해서는 ES6 이후 문법을 잘 아는 것이 중요하다.
internet explorer 가 문제다Opera mini에서도 지원하지 않는다.TL; DR
let: 선언된 block scope 내부에서만 접근 가능
var: 어느 scope에서 선언, 재할당하든 global에서 접근 가능
var name = "JS ES6";
if (name) {
var name = "REACT";
console.log("block inside", name); // block inside REACT
}
console.log("block outside", name); // block outside REACT
if block 내부에서 name을 재할당해도 전역에서 바뀌는 것을 확인할 수 있다.var name = "JS ES6";
if (name) {
let name = "REACT";
console.log("block inside", name); // block inside REACT
}
console.log("block outside", name); // block outside JS ES6
if block 내부에서 재할당한 name이 block scope 내부에서만 바뀌는 것을 확인할 수 있다.`${variable}`
- 이 문자열을 사용하려면 양 끝에 ` (backtick)을 넣어줘야 한다.
console.log(name+", " + age + " " + gender)
console.log(`${name}, ${age}, ${gender}`)
function sample(param1="hello", param2="world", param3=10){
console.log(${param1}, ${param2}, ${param3});
}
화살표 함수가 생긴 목적 ➡️ 간결한 코드 작성을 위해
// 화살표 함수 사용 안함
var sampleArrow = function(num) {
return num+1
}
// 화살표 함수 사용
var sampleArrow = num => num+1
() 생략 가능{}와 return 키워드 생략 가능var sampleArrow2 = function(str1, str2) {
if (!str1){
throw new Error("sampleArrow2의 str1이 누락되었습니다.")
}
if (!str2){
throw new Error("sampleArrow2의 str2가 누락되었습니다.")
}
return `${str1}, ${str2}`
}
트랜스파일링
- 브라우저에서 ES6 코드를 실행하기 전에 ES5로 컴파일해서 ES6가 제대로 작동하도록 보장하는 것
- 대표적 트랜스파일링 도구: BABEL
참고 자료: Learning React, 알렉스 뱅크스, 이브 포셀로 지음, 한빛 미디어