Archive

JS Day 6 옵셔널 체이닝,심볼,숫자형

|

JS Day 6 옵셔널 체이닝,심볼,숫자형


  1. 옵셔널 체이닝

    • ?. 문법을 사용하며 왼쪽 평가대상에 값이 없어도 괜찮은 경우 사용한다.
    • ?. 왼쪽의 변수는 반드시 선언되어 있어야한다. (없으면 Error)
    • ?.왼쪽 평가대상의 값이 null, undefined인 경우 short-circuit 현상 발생
    • obj?.prop - obj에 값이 있으면 prop 반환, 아니면 undefined 반환
    • obj?.method() - obj에 값이 있으면 method() 호출, 아니면 undefined 반환
    • onj?.[prop] - obj에 값이 있으면 [prop] 반환, 아니면 undefined 반환
    • delete obj?.prop - obj에 값이 있으면 prop 삭제
    • 읽기와 삭제는 가능하지만 할당은 불가능하다.
    let zoo = {};
    console.log(zoo?.fox); // undefined 출력
    
    let zoo = {
      fox() {
        console.log("안녕?");
      },
      rabbit: 8,
    };
    
    zoo.fox?.(); // "안녕?" 출력
    
    let key = "rabbit";
    console.log(zoo?.[key]); // 8 출력
    


  2. 심볼

    • 유일한 식별자를 만들때 사용
    • 객체의 key값은 문자형, 심볼형만 가능
    • 심볼은 문자형으로 자동 형 변환이 이루어지지 않는다.
    //Symbol()로 심볼값을 만든다
    let key = Symbol();
    
    //Symbol(...) 괄호 안에 심볼 이름을 넣을 수 있다
    let key = Symbol("myKey");
    
    //심볼값은 이름이 같아도 동일하지 않다(유일성 보장) - 전역 심볼 제외
    let key1 = Symbol("foo");
    let key2 = Symbol("foo");
    
    console.log(key1 == key2); // false 출력
    
    //심볼을 출력 할 때는 .toString(), .description을 쓰자
    console.log(key1.toString()); //Symbol(foo) 출력
    console.log(key1.description); // foo 출력
    
    • 심볼은 for-in 반복문에서 배제된다.
    • Object.assign으로 객체를 복사하면 심볼도 같이 복사된다.
    • Symbol.for(key)로 레지스트리 안에 심볼을 생성 할 경우 이름이 같으면 동일한 심볼로 취급된다.
    • 전역심볼의 이름을 찾을때는 Symbol.keyfor(symbol)를 이용한다. 전역심볼이 아닐 경우 undifined 반환


  3. 숫자형

    • 0 대신 e
    let billion = 1e9; // 1000000000
    let minus = 1e-6; // 0.000006
    
    • number.toString(base) : base 진법으로 number를 바꿔서 문자형으로 반환
    let num = 15;
    console.log(num.toString(16)); // f
    console.log(num.toString(8)); // 17
    console.log(num.toString(2)); // 1111
    
    • floor, ceil, round, trunc
    //floor 내림
    let num = Math.floor(3.6); // 3
    let num = Math.floor(-2.1); // -3
    
    //ceil 올림
    let num = Math.ceil(3.6); // 4
    let num = Math.ceil(-2.1); // -2
    
    //round 반올림
    let num = Math.round(3.6); // 4
    let num = Math.round(-2.7); // -3
    
    //trunc 무시
    let num = Math.trunc(3.6); // 3
    let num = Math.trunc(-2.7); // -2
    
    • toFixed(n) : 소수점 반올림하여 n번째 자리까지 표기해서 문자형으로 반환
    //toFixed()
    let num = 3.141592;
    console.log(num.toFixed(2)); // 3.14
    
    • parseInt(), parseFloat() : 문자와 숫자가 섞여있어도 쓸 수 있고, 숫자만 반환한다
    console.log(parseInt("100px")); // 100
    console.log(parseFloat("4.5rem")); // 4.5
    
    • isFinite() : 숫자면 true 반환, 숫자가 아니거나 ±Infinity면 false 반환
    console.log(isFinite("foo")); // false
    console.log(isFinite(35)); // true
    




참고 자료


JAVASCRIPT.INFO