javacript ES6 특징
변수 var , let, const 차이점
var x = 1;
var y = 2;
var x = 2; // 중복선언으로 x의 값은 2로 변경된다.
var y = 2;
console.log (x,y) // x = 2, y = 2 의 값을 가진다.
let age = 18
let age = 19 // 중복선언.
console.log(age) // 중복선언으로 에러발생!!
age = 20; // age에 재할당
console.log(age) // 20
const name = "철수"
name = "훈이" // 재할당 x 오류 발생
var name = "훈이" // name은 위에 상수로 잡혀있기 때문에 똑같은 변수명을 사용하게 되면 오류
const str = function (a, b = 2) {
return a +b
}
str(10) // 10 + 2 = 12
ES6부터 새로 도입된 문자열 표기법이다.
표현식/문자열 삽입, 여러 줄 문자열 등 다양한 기능을 제공한다.
템플릿 리터럴은 런타임 시점(크롬,파이어폭스,익스플로러)에
일반 자바스크립트 문자열로 처리/변환된다.
// 기존의 따옴표 방식 예제
const name : "철수"
const age: 18
console.log("저의 이름은 " + name + "이고, 나이는 " + age + "입니다.") //'저의 이름은 철수이고, 나이는 18입니다.'
기존의 따옴표 방식에는 줄바꿈이 허용되지 않아. 백슬럿()로 시작하는 이스케이프 시퀀스를 사용해야하며, "+" 연산자로 여러번 이어 붙이게 되는데, 이 과정에서 실수하게 된다면 코드를 다시 살펴보게 되고, 처음 접하시는 비전공자 같은 경우에는 오류로 인해 하나하나 찾는 시간이 늘어나게 된다.
// ``(백틱) 사용 예제
const name : "철수"
const age: 18
console.log(`저의 이름은 ${name}`이고, 나이는 ${age}입니다.) //'저의 이름은 철수이고, 나이는 18입니다.'
다음은 백틱(`) 사용 예제이다.
기존 따옴표 방식에는 +연산자로 여러번 이어 붙여야 한다면 백틱 같은경우 + 연사자를 사용하지 않고 (``) 안에 가지고 오고싶은 변수를 $(변수명)을 가져와 값을 얻을 수 있고, 또 기존 따옴표방식에 비해 가독성이 좋고, 코드가 한결 편안해진 느낌이 든다.![]
// 이름과 성을 요소로 가진 배열 arr
let arr = ["Bora", "Lee"]
let [firstName, surname] = arr;
alert(firstName); // Bora
alert(surname); // Lee
const obj ={ name : "철수", gender :"male"}
const {name, gender} = obj // 이름과 성별을 가져온다.
console.log({name, gender}) //{ name : "철수", gender :"male"}
console.log(obj) // { name : "철수", gender :"male"}
//새로운 벨류값으로 저장
const {name: newName, gender : newGender} = obj
console.log(newName,newGender) // '철수' 'male'
- 기존 자바스크립트에서 사용하던 객체 정의 방식을 개선한 문법이다. 자주 사용하던 문법들을 간결하게 사용할 수 있도록 바뀌었다.
let name = "철수"
let gender = "male"
const profile = {
name,
gender
}
console.log(profile) // { name: '철수', gender: 'male' }
const profile = {
name(){ // function 생략 부분, 기존 name: function(){}
console.log("철수")
}
}
console.log(profile.name())
const num = function(a,b){
return a + b
}
num(1,5) // 6 기존 문법 function 키워드를 쓰는 방법
const num01 = (a,b) => {
return a + b
}
num01(1,5) // 6 화살표 함수를 사용한 함수
const promiseTest = function(){
return new Promise((resolver,reject) =>{
// resolver(100)
reject("error")
})
}
console.log(promiseTest()) // error , resolver 실행시 값은 100
pending : 비동기 처리가 아직 수행되지 않은상태
구현 : resolve 또는 rehect험수가 아직 호출되지 않은 상태
fulfilled : 비동기 처리가 수행된 상태(성공)
구현 : resolve 함수가 호출된 상태
rejected : 비동기 처리가 수행된 상태(실패)
구현 : reject 함수가 호출된 상태
settled : 비동기 처리가 수행된 상태(성공 또는 실패)
구현 : resolve 또는 reject 함수가 호출된 상태
function food(name){
this.name = name;
}
food.prototype.say = function(){
console.log(`맛있는 ${this.name}`)
}
var food = new food("음식")
food.say() // 맛있는 음식
class food {
constructor(name){
this.name = name;
}
say(){
console.log(`맛있는 ${this.name}`)
}
}
const Food = new food("맛있는")
Food.say()
export const member = ()=>{
return "use Module"
}
import {member} from "my module.js" // member라는 함수 사용
import member from "my module.js" //export default를 사용하면 {}로 감싸주지 않아도 된다.
이것으로 마치며, 블로그를 쓰면서 하나하나 찾고 쓰다보니 이해가 많이되고, 자세하게 몰랐던 부분들을 좀 더 알 수 있는 시간이 된거 같아서 너무 기분이 좋네요 ㅎㅎ!!
머리로써는, 이해가 가지만 이게 설명하는건 되게 어렵네요.. 어떤 부분들을 써야하고, 어떤 부분들을 없애야하는지.. 좀 더 노력해서 제가 이해한것들을 쉽게 많이 써서 저한테도..보시는분들한테도 쉽게 알 수 있도록 하겠습니다!! 화이튕~!!