-
[모던 자바스크립트 딥다이브/ 7 연산자]JavaScript/모던 자바스크립트 deepdive 2024. 3. 5. 19:48
7 연산자
7.1. 산술연산자
산순연산이 불가능한 경우 NaN을 반환한다.
숫자타입이 아닌 피연산자에 + 단항 연산자를 사용하면 피연산자를 숫자타입으로 변환하여 반환한다
- ‘+’ 연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다.
- ‘==’동등비교 연산자는 좌항과 우항의 피연산자를 비교할 때 먼저 암묵적 타입변환을 통해 타입을 일치시킨후 같은 값인지 비교한다.
- 때분에 동등비교연산자 대신 일치비교’===’ 연산자를 사용하는 것이 좋다. 일치비교 연ㅅ나자는 좌항과 우항의 피연산자가 타입도 같고 값도 같은 경우에 한하여 true를 반환한다.
- NaN은 자신과 일치하지 않는 유일한 값이다. 따라서 숫자가 NaN인지 조사하려면 빌트인함수 isNaN을 사용한다.
- // isNaN 함수는 지정한 값이 NaN인지 확인하고 그 결과를 불리언 값으로 반환한다. isNaN(NaN); // - true isNaN(10); // • false isNaN(1 + undefined); // 一 true
- 자바스크립트는 양의 0과 음의 0이 있는데 이들을 비교하면 true를 반환한다.
-
- 리액트에서 왜 삼항연산자를 쓰는지 고민해보기 *
- Object.is 메서드 : 예측가능한 정확한 결과를 반환함.
- -0 === +0 //true Objext.is(-0, +0) //false NaN === NaN; //false Object.is(NaN,NaN) //true
- 논리 부정 (!) 연산자는 언제나 불리언값을 반환한다. 만약 피연산자가 불리언값이 아니면 불리언타입으로 암묵적 타입변환된다.
- !0 //true !'Hello';//false
- 논리합(||)또는 논리곱(&&) 연산자 표현식의 평가결과는 불리언값이 아닐 수도 있다. 논리합(||) 또는 논리곱(&&) 연산자 표현식은 언제나 2개의 피연산자 중 어느 한쪽으로 평가된다.
- 'Cat' && 'Dog' ; // ->'Dog'
- 쉼표 연산자
var x,y,z; x = 1, y = 2, z = 3;
- 쉼표(,) 연산자는 왼쪽 피연산자부터 차례로 피연산자를 평가하고 마지막 연산자의 평가가 끝나면 마지막 피연산자의 평가결과를 반환한다.
- 그룹 연산자는 연산자 우선순위가 가장 높다.
- typeof 연산자는 피연산자의 데이터 타입을 문자열로 반환한다.
- string
- number
- boolean
- nudefined
- symbol
- object
- function
- null 을 반환하는 경우는 없으며, 함수의 경우 function을 반환한다. typeof 연산자가 반환하는 문자열은 7개의 데이터타입과 정확히 일치하지는 않는다.
typeof null // → “object”
- 따라서 값이 null타입인지 확인할 때는 typeof 연산자를 사용하지 말고 일치연산자(===)를 사용하자.
- 선언하지 않은 식별자를 typeof연산자로 연산해보면 referenceError가 발생하지 않고 undefined를 반환한다.
// undeclared식별자를 선언한 적이 없다. typeof undeclared; //undefined
- 지수연산자
- 좌항의 피연산자를 밑으로, 우항의 피연산자를 지수로 거듭제곱하여 숫자 값을 반환한다.
2 ** 2; // -> 4 2 ** 2.5 ; // -> 5.6568... 2 ** 0 // -> 1 2 ** -2 // -> 0.25
- 지수 연산자는 다음과 같은 경우 Math.pow 메서드보다 가독성이 좋다.
2 ** 2 ** 2; // ->16 Math.pow(Math.pow(2,2),2) // ->16
- 지수 연산자는 다른 산술 연산자와 마찬가지로 할당 연산자와 함께 사용할 수 있다.
var num = 5; num **= 2; // -> 25 //지수 연산자는 이항 연산자 중에서 우선순위가 가장 높다. 2 * 5 ** 2 // -> 50
- 연산자의 부수효과
- 할당연산자(=), 증가/감소연산자(++/—), delete연산자는 부수효과가 있다.
var x; // 할당 연산자는 변수 값이 변하는 부수 효과가 있다. // 이는 x변수를 사용하는 다른 코드에 영향을 준다. x = 1; console.log(x); //1 //증가 / 감소연산자(++/--)는 피연산자의 값을 변경하는 부수 효과가 있다. // 피연산자 x의 값이 재할당되어 변경된다. 이는 x 변수를 사용하는 다른코드에 영향을 준다. x++; console.log(X); //2 var o = { a : 1 }; // delete 연산자는 객체의 프로퍼티를 삭제하는 부수 효과가 있다. // 이는 o 객체를 사용하는 다른 코드에 영향을 준다. delete o.a; console.log(o); //{}
- 연산자는 종류가 많아서 연산자 우선순위를 모두 기억하기 어렵고 실수하기도 쉽다. 우선순위가 가장 높은 그룹 연산자를 사용하여 우선순위를 명시적으로 조절하는 것을 권장한다.
'JavaScript > 모던 자바스크립트 deepdive' 카테고리의 다른 글
[모던 자바스크립트 딥다이브 / 11 원시 값과 객체의 비교] (0) 2024.03.05 [모던 자바스크립트 딥다이브 / 10 객체 리터럴] (0) 2024.03.05 [모던 자바스크립트 딥 다이브 / 9 타입 변환과 단축 평가] (0) 2024.03.05 [모던 자바스크립트 딥다이브 / 8 블록문] (0) 2024.03.05 [모던 자바스크립트 딥다이브 / 12 함수] (0) 2024.03.05