07장 연산자
피연산자 :"값" -> 명사
연산자 : "피연산자를 연산하여 새로운 값을 만든다"-> 동사
연산자의 종류
1. 산술 연산자 : 수학적 계산을 수행해 새로운 숫자 값을 생성
- 이항 산술 연산자 : + , - 등
- 단항 산술 연산자 : ++ , -- , + ,-(양수<-> 음수 변환)
- 문자 연결 연산자 : + (피연산자중 하나 이상이 문자열인경우 문자열 연결 연산자로 동작)
+ 단항 연산자를 사용할 때 숫자 타입이 아닌 피연산자를 연산하면 숫자 타입으로 변환해 반환한다.
var x = "1";
console.log(+x); //숫자 1
console.log(x); //"1" 부수효과없음
var y = false;
console.log(+y); //숫자 0
var z = "hello";
console.log(+z); //NaN
+ 는 또한 피연산자중 하나 이상이 문자열인경우 문자열 연결 연산자로 동작한다.
'1'+2 //'12'
2. 할당 연산자 : 우항에 있는 피연산자의 평가 결과를 좌항에 있는 변수에 할당
= , += , -= 등
3. 비교 연산자
- 동등/일치 비교 연산자 ==, ===
- 대소 관계 비교 연산자 > , < ,>= , <=
NaN 은 일치 비교 연산자에서 자신과 일치 하지 않는 유일한 값임으로 주의하자.
일치 비교 연산자 사용시 숫자 0도 주의하자.
-> 대신 Object.is 메서드가 있다.
//동등비교는 예측하기 어려워 안티 패턴이다.
'0'==''; //false
0 ==''; //true
NaN === NaN ; //false
null === null ; //true
0 === -0; //true
0 == -0; //true
Object.is(-0,+0); //false;
Object.is(NaN,NaN); //true;
4. 삼항 조건 연산자
조건식? 참: 거짓;
- 삼항 조건 연산자 표현식은 값처럼 사용할 수 있지만 if -else 문을 사용할 수 없다.
5. 논리 연산자 || , &&, !
드 모르간의 법칙 을 애용하자
!(x || y) === (!x && !y)
!(x&& y)=== (!x || !y)
//암묵적 타입 변환
!0; // true
!"hell"; //false
//단축평가
"cat"&& "dog" //->dog
6. 쉼표 연산자 , 7그룹연산자 ()
8. typeof 연산자
주의사항으로 함수의 경우 "function" 을, null은 "object"로 반환하며 "null" 을 반환하는 경우는 없다.
선언한적 없는 식별자의 경우 undefined 를 반환한다
typeof unddfdgff; // 에러가 아닌 undefined
등등 연산자는 많으나 생략한다.
08장 제어문
제어문 : 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행( 반복문)할때 사용.
- 블록문의 끝에는 세미콜론을 붙이지 않는다.
break 문 : 레이블문, 반복문, switch 문의 코드블록을 탈출함.
레이블문: 식별자가 붙은 문
레이블문은 중첩된 for문의 내부 for문에서 break 를 실행하면 내부 for 문 탈출이 아닌 외부 for문을 탈출할 시 유용하다.
outer: for(var i =0 ; i<3; i++){
for(var j =0 ; j<3; j++){
if (i +j ===3) break outer;
console.log(`inner [${i}, ${j}]`);
}
}
'독서' 카테고리의 다른 글
[모던 자바스크립트 Deep Dive] 15장~17장 (0) | 2024.02.23 |
---|---|
[모던 자바스크립트 Deep Dive] 11장~14장 (0) | 2024.02.12 |
[모던 자바스크립트 Deep Dive] 09,10장 (1) | 2024.02.04 |
[모던 자바스크립트 Deep Dive] 05장 표현식과 문, 06장 데이터 타입 (2) | 2024.02.01 |
[모던 자바스크립트 Deep Dive] 04 장 변수 (0) | 2023.10.10 |