ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Javascript "ES6"문법
    TIL 2024. 1. 3. 21:18
    728x90

    ECMAScript 6 (ES6)

     

     

     

     

    오늘은 자바스크립트에서 2015년도에 대규모 문법적 향상 및 변경인

    ES6 문법에 대해 정리하고자 한다.

     

     

    1. let 과 const

     

    ✅ let : 재할당 가능, 재선언 불가

    let name = "john"
    console.log(name) // john
    
    name = "bob" // 재할당 가능
    console.log(name) // bob
    
    let name = "alex" // 재선언 불가능, SyntaxError: Identifier 'name' has already been declared

     

    ✅ const : 재할당, 재선언 불가 / 초기값 없을시 선언 불가능

    const name; // 초기값 없이 선언 불가능, SyntaxError: Missing initializer in const declaration
    ---
    const name = "john"
    console.log(name) // john
    
    name = "bob" // 재할당 불가능, TypeError: Assignment to constant variable.
    
    const name = "bob" // 재선언 불가능, SyntaxError: Identifier 'name' has already been declared

     

     

    2. 화살표 함수 (Arrow Function)

    ✅ function 이나 return 키워드 없이 함수를 만드는 방법이다. 

    // ES5
    function func() {
    	return true
    }
    
    //ES6
    const func = () => {
    	return true
    }
    // return 문이 한줄이면 return도 생략 가능.
    const func = () => true
    
    // function 은 호출시 this가 정해짐, 화살표함수는 선언시 this가 정해진다.

     

     

    3. 삼항 연산자 (ternary operator)

    ✅ if..else 문을 간단하게 표현하는 연산

    condition ? expr1 : expr2
    
    console.log(box ? "참" : "거짓") // 참
    // 만약 box의 값이 true면 참을, false면 거짓을 반환해라 ~
    console.log(box ? "참" : "거짓") // 거짓
    // 만약 box의 값이 true면 참을, false면 거짓을 반환해라 ~

     

     

    4. 구조 분해 할당 (Destructuring)

    ✅ 배열 [ ] 이나 객체 { } 의 속성을 분해해서 그 값을 변수에 담는 문법.

    // 배열의 경우
    let [value1, value2] = [1, "new"];
    console.log(value1); // 1
    console.log(value2); // "new"
    
    let arr = ["value1", "value2", "value3"];
    let [a,b,c] = arr;
    console.log(a,b,c) // value1 value2 value3
    
    // let [a,b,c] = arr; 은 아래와 동일!
    // let a = arr[0];
    // let b = arr[1];
    // let c = arr[2];
    
    let [a,b,c,d] = arr
    console.log(d) // undefined
    
    let [a,b,c,d = 4] = arr // 비어있던 d의 값을 4로 할당가능
    console.log(d) // 4
    // 객체의 경우
    let user = {name: "nbc", age: 30};
    let {name, age} = user;
    
    // let name = user.name;
    // let age = user.age;
    
    console.log(name, age) // nbc 30
    
    // 새로운 이름으로 할당
    let {name: newName, age: newAge} = user;
    console.log(name, age) // ReferenceError: name is not defined
    console.log(newName, newAge) //nbc 30
    
    let {name, age, birthDay} = user;
    console.log(birthDay) // undefined
    
    let {name, age, birthDay = "today"} = user;
    console.log(birthDay) // today

     

     

    5. 단축 속성명 (property shorthand)

    ✅ 객체의 key 와 value의 값이 같을시, 생략 가능

    const name = "john"
    const age = "25"
    
    const obj = {
    	name: name
    	age: age
    };
    
    // 단축 속성명 사용시
    const obj = {
    	name,
    	age
    }; 
    
    console.log(obj); // { name: john, age: 25 }

     

     

    6. 전개 구문 (Spread)

    ✅ 배열이나 객체를 전개하는 문법.  구조 분해 할당과 함께 정말 많이 사용된다!

    // 배열
    let arr = [1,2,3];
    
    let newArr = [...arr, 4];
    console.log(newArr) // [1,2,3,4]
    
    // 객체
    let user = {name: "nbc", age: 30};
    let user2 = {...user} // 새로운 객체 user2 = {name: "nbc", age: 30} 생성.
    
    user2.name = "nbc2" // user2 객체의 name을 nbc2 로 변경 (user 객체에는 영향 x)
    
    console.log(user.name) // nbc
    console.log(user2.name) // nbc2

     

     

    7. 나머지 매개변수 (rest parameter)

    ✅ 나머지 매개변수는 함수에 전달된 인수들 중, 매개변수로 명시하지 않은 나머지 인수들을 배열로 수집한다.

    function exampleFunction(param1, param2, ...restParams) {
      console.log(param1);        // 첫 번째 매개변수
      console.log(param2);        // 두 번째 매개변수
      console.log(restParams);    // 나머지 매개변수들 (배열)
    }
    
    exampleFunction(1, 2, 3, 4, 5);
    // param1 = 1
    // param2 = 2
    // resrParams = [3, 4, 5] 가 할당된다.

     

     

    8. 템플릿 리터럴 (Template literals)

    백틱(` `) 과 ${ } 를 통해 표현하는 방법.

    let name = "John";
    let age = 30;
    
    // 템플릿 리터럴 사용
    let greeting = `안녕하세요, ${name}님! 나이는 ${age}세 입니다.`;
    
    console.log(greeting);
    // 출력: 안녕하세요, John님! 나이는 30세 입니다.

     

    템플릿 리터럴을 사용하면 문자열을 여러 줄에 걸쳐 작성할 수 있다.

    let multiLineString = `
      이것은
      여러 줄로
      구성된 문자열입니다.
    `;
    
    console.log(multiLineString);
    /*
      출력:
      이것은
      여러 줄로
      구성된 문자열입니다.
    */

     

    9. named export  vs  default export

    ✅ 1. default export

     

    하나의 모듈에선 하나의 항목만을 기본으로 내보낼 수 있다. 이를 'default export' 라고 부르며, 가져올 때는 이름을 지정하지 않고 가져올 수 있다.

    // 모듈 정의 (exampleModule.js)
    const myDefaultExport = "This is the default export.";
    
    export default myDefaultExport;

     

    이제 다른 파일에서 이 모듈을 가져올 때, 'default export' 는 이름을 지정하지 않고 가져올 수 있다.

     

    // 모듈 가져오기
    import myDefaultExport from './exampleModule';
    
    console.log(myDefaultExport); // 출력: This is the default export.

     

    2. named export

     

    'named export' 는 여러 개의 항목을 명시적으로 내보낼 수 있도록 하는 방법이다. 

    'named export' 를 사용하면 모듈에서 여러 항목을 가져올 때 항목의 이름을 사용하여 가져올 수 있다.

    // 모듈 정의 (exampleModule.js)
    export const variable1 = "This is variable1.";
    export const variable2 = "This is variable2.";
    
    export function myFunction() {
      console.log("This is myFunction.");
    }

     

    이제 다른 파일에서 이 모듈에서 내보낸 항목들을 가져올 때, 항목의 이름을 사용하여 가져올 수 있다.

    // 모듈 가져오기
    import { variable1, variable2, myFunction } from './exampleModule';
    
    console.log(variable1); // 출력: This is variable1.
    console.log(variable2); // 출력: This is variable2.
    myFunction();           // 출력: This is myFunction.

     

     

     

    여러번 반복 학습을 통해 ES6의 새로운 문법 9가지를 많이 익혔다.

    하지만 익힌 것과는 별개로, 내가 코딩을 할 때 이 문법을 어떻게, 어디서 적용해야 할지는 아직 감이 잡히지 않는다.

    앞으로 코딩하는 프로젝트에서는 ES6의 문법을 적극 활용해보도록 노력해야겠다.

    728x90

    'TIL' 카테고리의 다른 글

    Javascript "Map" 과 "Set"  (0) 2024.01.05
    Javascript "일급 객체로서의 함수"  (1) 2024.01.04
    Javascript의 "배열(Array)"  (1) 2024.01.02
    Javascript의 "객체(Object)"  (1) 2023.12.30
    "git pull" 과 "git clone"의 차이  (0) 2023.12.30
Designed by Tistory.