ECMAScript를 줄여서 부르는 말로 기능이 모든 브라우저에서 동일하게 동작하지 않는 이슈인 크로스 브라우징 이슈를 해결하기 위해 JavaScript를 표준화한 것이다.
ES5,ES6은 버전 숫자를 붙여 ECMAScript를 줄여 쓰는 것이다.
var
만 있다. 재할당과 재선언에 굉장히 자유롭고 호이스팅 문제가 있다.
호이스팅이란
코드가 실행되기 전에 변수선언/함수선언이 해당 유효범위의 최상단으로 끌어 올려진 것과 같은 현상을 말한다.
호이스팅 문제를 해결하기 위해 let
, const
가 추가 되었다.
let
은 한번 선언된 변수의 이름과 동일한 이름으로 선언할 수 없다. 값은 재할당 할 수 있다.
const
는 재선언 재할당 모두 불가능하다.
ES6부터 등장한 함수 선언법
var func = function(arg1, arg2) {console.log("ES5")}
let func = (arg1, arg2) => {console.log("ES6")}
ES6부터 등장한 백틱으로 문자열을 감싸 표현하는 기능
var name = "이름"
var age = 20
console.log("저의 이름은" + name + "이고, 나이는 " + age +"입니다.")
let name = "이름"
let age = 20
console.log(`저의 이름은 ${name}이고, 나이는 ${age}살 입니다.`)
var person = function(name) {
var name = name || "이름"
return name
}
let person = function(name="이름") {
return name
}
ES6부터 class
키워드 사용 가능
프로토타입 기반
var Add = function(arg1, arg2) {
this.arg1 = arg1
this.arg2 = arg2
}
Add.prototype.calc = function() {
return this.arg1 + "+" + this.arg2 + "=" + (this.arg1 + this.arg2)
}
var num = new Add(3,5)
console.log(num.calc())
class Add {
constructor(arg1, arg2) {
this.arg1 = arg1
this.arg2 = arg2
}
calc() {
return this.arg1 + "+" + this.arg2 + "=" + (this.arg1 + this.arg2)
}
}
let num = new Add(3, 5)
console.log(num.calc())