// ES5 console.log('for loop start') for(var i=0; i<10; i++) { console.log('i : ' + i) } console.log('for loop end i : ' + i) // for loop end i : 10
functioncounter() { for(var j=0; j<10; j++) { console.log('j : ', j) } } counter() console.log('j : ', j) // j is not defined
// ES6 console.log('for loop start') for(let i=0; i<10; i++) { console.log('i : ' + i) } console.log('for loop end i : ' + i) // j is not defined
functioncounter() { for(let j=0; j<10; j++) { console.log('j : ', j) } } counter() console.log('j : ',j) // j is not defined
또한 var 변수는 재선언,재할당이 가능하지만 let 변수는 재선언이 불가능합니다 (const 변수는 immutable variable이므로 재할당도 불가능)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
var a = 'foo' var a = 'bar'
// hoisting으로 ReferenceError가 나지않는다. b = 'foo' var b
let c = 'foo' let c = 'bar'// Uncaught SyntaxError: Identifier 'c' has already been declared c = 'bar'// "bar"
const d = 'foo' const d = 'bar'// Uncaught SyntaxError: Identifier 'd' has already been declared d = 'bar'// Uncaught TypeError: Assignment to constant variable.
2개 이상의 인수나 2개이상의 요소 또는 2개이상의 변수가 해당되는 곳에 확장 될 수 있도록 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13
functionmyFunc(x, y, z){} // ES6 let params = [ "Foo", true, 2 ] let others = [ 1, 2, ...params ] // [ 1, 2, "Foo" ,true, 2 ] let str = "Bar" let chars = [ ...str ] // [ "B", "a", "r"] myFunc(1, 2, ...params); // ES5 var params = [ "Foo", true, 2 ]; var others = [ 1, 2 ].concat(params); // [ 1, 2, "Foo" ,true, 2 ] var str = "Bar"; var chars = str.split(""); // [ "B", "a", "r"] myFunc.apply(null, [1, 2].concat(params));
Template Literals
문자열 다중 행 처리와 보간문자 처리를 할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
// ES6 let user = { name : "Foo" } let info = { id: "bar", email: "Foo@example.com"} let userInfo = `Hello ${user.name}. Your ID is ${info.id} and email is ${info.email}.` // Hello Foo. // Your ID is bar // and email is Foo@example.com
// ES5 var user = { name : "Foo" } var info = { id: "bar", email: "Foo@example.com"} var userInfo = "Hello " + user.name + ".\n"+ "Your ID is " + info.id + "\n" "and email is "+info.email+".";