Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

동그란 도그린

[모던 자바스크립트 Deep Dive🦎] 7장 : 연산자 본문

FrontEnd/Javascript

[모던 자바스크립트 Deep Dive🦎] 7장 : 연산자

도그rin 2023. 3. 29. 19:05

📍 산술 연산자

  • 피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값을 만듦
  • 산술 연산이 불가능한 경우에는 NaN 반환

 

  • 이항 산술 연산자
    • 모든 이항 산술 연산자는 부수 효과(피연산자의 값을 변경) X

 

  • 단항 산술 연산자
    • 증가/감소(++/ --) 연산자는 부수 효과 O
    • 숫자 타입이 아닌 피연산자에 +/- 단항 연산자를 사용하면 피연산자를 숫자 타입으로 변환한 값을 새로 생성해서 반환 ⇒ 부수 효과 X
    var x = '1';
    console.log(+x);  // => 1 : 문자열을 숫자로 타입 변환
    console.log(x);   // => '1' : 부수 효과는 X
    
    x = 'Hello';
    console.log(+x);  // => NaN : 숫자로 타입 변환 불가능하므로
    console.log(x);   // => 'Hello'
    
    -true;    // => -1 : 불리언 값을 숫자로 타입 변환
    -'Hello'  // => NaN : 숫자로 타입 변환 불가능하므로
    

 

  • 문자열 연결 연산자
    • 암묵적 타입 변환(타입 강제 변환)을 함 : 개발자의 의도와 관계 없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환
    1 + true;       // => 2 : true는 1로 타입 변환 됨
    '1' + 2;        // => '12'
    1 + undefined;  // => NaN
    

 

📍 할당 연산자

  • 우항에 있는 피연산자의 평가 결과를 좌항의 변수에 할당
  • 부수 효과 O (좌항의 변수에 값을 할당하므로)
  • 할당문은 표현식인 문
var x;

console.log(x = 10);   // => 10 : 할당문은 표현식인 문이므로

 

📍 비교 연산자

  • 좌우항의 피연산자를 비교한 후 그 결과를 불리언 값으로 반환함

 

  • 동등/일치 비교 연산자
    • 동등 비교 연산자와 일치 비교 연산자는 비교하는 엄격성의 정도가 다름
    • 동등 비교 연산자(==)는 좌우항의 피연산자를 비교하기 전 암묵적 타입 변환을 통해 타입을 일치시킨 뒤 값을 비교
    🔅 일치 비교 연산자에서 NaN 주의할 것 (NaN은 자신과 일치하지 않는 유일한 값)숫자가 NaN 값인지 확인하려면 빌트인 함수 Number.isNaN 사용할 것
    0 === -0;   // => true
    0 == -0;    // => true
    
  • 🔅 양의 0(+0)과 음의 0(-0)을 비교하면 true 반환함

 

🔅 Object.is 메서드는 다음과 같이 정확한 비교 결과 반환함

Object.is(-0, +0);   // => false
Object.is(NaN, NaN); // => true

 

📍 삼항 조건 연산자

조건식 ? 조건식이 true일 때의 반환 값 : 조건식이 false일 때의 반환 값
  • 부수 효과 X
  • 조건식의 평가 결과가 불리언 값이 아니면 불리언 값으로 암묵적 타입 변환
  • 값으로 평가 가능한 표현식인 문

 

📍 논리 연산자

  • 논리 부정 연산자(!)
    • 피연산자가 불리언 값이 아니면 불리언 값으로 암묵적 타입 변환
    !0;          // => true
    !'Hello';    // => false
    

 

  • 논리합( || ) 또는 논리곱( && ) 연산자
    • 표현식의 평가 결과가 불리언 값이 아닐 수 있음
    • 언제나 2개의 피연산자 중 어느 한쪽으로 평가됨
    'Cat' && 'Dog';   // => 'Dog'
    

 

📍 쉼표 연산자( , )

  • 왼쪽부터 차례로 피연산자를 평가하고 마지막 피연산자 평가가 끝나면 마지막 피연산자의 평가 결과를 반환
var x, y, z;
x = 1, y = 2, z = 3;   // => 3

 

📍 그룹 연산자

  • 소괄호( ‘()’ )로 피연산자를 감싸는 연산자
  • 연산자 우선순위가 가장 높음

 

📍 typeof 연산자

  • typeof 연산자가 반환하는 문자열은 7개의 데이터 타입과 정확히 일치하진 않음
  • ‘null’을 반환하는 경우는 없으며, null은 ‘object’로 반환됨 ⇒ 값이 null 타입인지 확인할 때는 typeof 연산자 말고 일치 연산자(===) 사용할 것!
typeof null    // => 'object'

var foo = null;
foo === null;  // => true
  • 선언하지 않은 식별자를 typeof 연산자로 연산하면 ReferenceError가 발생하지 않고 undefined 반환

 

📍 지수 연산자( ** )

  • ES7에서 도입됨
  • 이항 연산자 중에서 우선순위가 가장 높음

 

📍 연산자의 부수 효과

  • 부수 효과 O : 할당 연산자(=), 증가/감소 연산자(++/--), delete 연산자
Comments