TIL | WIL

9/20 (수) Bitwise NOT으로 Math.floor() 대체하기 TIL

깊은바다거북 2023. 9. 20. 23:03

공부한 것

  • 단항 비트 논리부정 연산자(Bitwise NOT) “~

    : 숫자를 32 비트(이진수)로 나타내어 0과 1을 반전한 결과를 반환한다.

    const a = 5; // 00000000000000000000000000000101
    const b = -3; // 11111111111111111111111111111101
    
    console.log(~a); // 11111111111111111111111111111010
    // Expected output: -6
    
    console.log(~b); // 00000000000000000000000000000010
    // Expected output: 2
    
    console.log(~3.4) // -4

    x를 전환(Bitwise NOTing)하면 -(x + 1)의 값을 얻게 된다. 즉, 양수와 음수 양측으로 전환될 때 음수 쪽 절대값이 1이 더 큰 규칙이라고 보면 되겠다.

    이를 응용하여 두 번 연달아 붙이면 Math.floor() 대신으로 사용 가능하다. 더 간결하고, 속도도 더 빠르다고 한다.

    // 기존: 
    Math.floor(4.9) === 4 // true;
    // 축약기법: 
    ~~4.9 === 4 // true;

  • 옵셔널 체이닝 ?.

    : 중첩(체이닝)으로 객체의 속성에 접근하거나 함수를 호출할 때 쓰여서, 만약 중간 결과가 undefinednull이라면 에러를 던지는 대신에 undefined를 반환하도록 한다.

    // 문법: 
    obj.val?.prop
    obj.val?.[expr]
    obj.func?.(args)
    
    const dogName = adventurer.dog?.name;
    console.log(dogName) // .dog가 정의되어 있지 않을 때 undefined;

Uploaded by N2T