반응형
# 자바스크립트 학습
# 관계 연산자 (Relational)
- 관계 연산자는 작거나, 크거나 등을 비교하는 연산자 이다.
- 관계 연산자에는 <, >, <=, >= 연산자, instanceof 연산자, in 연산자가 포함된다.
## > 연산자
- 부등호 : Greater-than
- 양쪽이 Number 타입일 때, 왼쪽이 오른쪽 보다 크면 true, 아니면 false를 반환한다.
log((1 + 2) > 1);
=>
true
먼저 표현식을 평가하여 값을 구한다. (1+2) => 3
3 > 1 에서 3이 1보다 크므로 true를 반환한다.
(숫자로 비교하는 것을 수학 값으로 비교한다고 말한다.)
## String 타입 비교
log( 1 > "A" );
=>
false
한 쪽이 String 타입이면 false를 반환한다.
- 양쪽이 모두 String 타입이면 유니코드 사전 순서로 비교한다.
log(("\u0033" > "\u0032")); // \u0033 : 3, \u0032 : 2
log("A" > "1"); // A : \u0041, 1 : \u0031
log("가" > "다");
=>
true
true
false
코드 포인트는 유니코드를 등록할 때 부여한다.
유니코드 등록 순서로 비교 or 유니코드 사전 순서로 비교한다고 말한다.
한글도 유니코드 사전 순서로 비교한다.
- 문자 하나씩 비교
log("A07" > "A21");
=>
false
A, 0, 7
A, 2, 1
각 각 유니코드 코드 포인트 값을 비교
- <, <=, >= 는 비교 기준만 다르다.
# == 연산자
- 동등 연산자
- 왼쪽과 오른쪽 값이 같으면 true, 다르면 false를 반환한다.
- 값 타입은 비교하지 않는다. (1과 "1"이 같음)
log(1 == "1");
=>
true
값 타입이 다르면, 숫자:문자 or 문자:숫자 일때
문자 타입을 숫자 타입으로 변환하여 비교한다.
var value1;
log(value1 == undefined);
=>
true
value1를 선언만 했으므로 undefined
var value2;
log(value2 == null);
=>
false
value2를 선언만 했으므로 undefined
undefined : 값, 타입은 undefined
unll : 값, 타입은 object
그런데, 값만 비교하므로 true
# != 연산자
- 부등 연산자
- 왼쪽과 오른쪽 값이 다르면 true, 같으면 false를 반환한다.
- a != b와 !(a == b)가 같다.
# === 연산자
- 일치 연산자
- 왼쪽과 오른쪽의 값과 타입이 모두 같으면 true, 값 또는 타입이 다르면 false
- 1 === 1 의 경우 true
- 1 === "1" 의 경우 값은 같으나, 타입이 다르므로 false
log(1 === "1");
=>
false
- undefined, null 비교
var value;
log(value == null);
log(value === null);
=>
true
false
value 변수를 선언만 했으므로 값은 undefined
undefined 는 값으로, 타입은 undefined
null 는 값으로, 타입은 object
undefined == null // 둘다 값이므로 true
undefined === null // 둘다 값이지만, 타입이 다르므로 false
# !== 연산자
- 불일치 연산자
- 값 또는 타입이 다르면 true, true가 아니면 false
# 콤마 연산자
- 기호 : , (Comma)
- 콤마를 이용하여 표현식을 분리한다.
- var a = 1, b = 2; (콤마로 분류, var는 한 번만 작성)
# ( ) 연산자
- 그룹핑 연산자
- 소괄호( ) 안의 표현식을 먼저 평가한다.
- 평가한 값을 반환한다.
- 5 / (2 + 3)
# | | 연산자
- 논리 OR 연산자
- 표현식의 평가 결과가 하나라도 true이면 true, 아니면 false
- true가 되는 변수 값 반환
var value, zero = 0, two = 2;
log(value || zero || two);
=>
2 // true가 되는 시점의 변수 값 반환(two일때 반환)
value의 변수 값이 undefined이므로 false
zero 변수 값이 0 이므로 false
two 변수 값이 2 이므로 true
- 모두가 false 일 때
var value, zero = 0;
log(zero || value);
=>
undefined // 마지막가지 비교하였는데 모두가 false이면 마지막 변수 값 반환
zero 는 0 이므로 false
value 는 undefined 이므로 false
- true이면 비교 종료
var one = 1;
log(one === 1 || two === 2);
=>
true
one === 1 은 true 이므로 다음은 비교하지 않는다.
# && 연산자
- 논리 AND 연산자
- 표현식의 평가 결과가 모두 true이면 true, 아니면 false
- 모두가 true일 때
var one = 1, two = 2;
log(one && two);
=>
2 // true가 되는 마지막 변수값인 2 반환
- 왼쪽 결과가 false이면 오른쪽은 비교하지 않는다.
var one = 1, zero = 0;
log(one && zero && nine);
=>
0
# 조건 연산자
- 3항 연산자 라고도 한다.
- 기호 : 조건 ? a : b
- 조건의 표현식을 먼저 평가하여 true이면 a의 결과를 반환하고, false이면 b의 결과를 반환한다.
log(1 === 1 ? "같음" : "다름");
log(1 === "1" ? "같음" : "다름");
=>
같음
다름
# 연산자 우선 순위
- 연산자의 실행 우선순위 (자바스크립트의 스펙인 ECMA-262에는 없고 MDN에 작성되어있다.)
- MDN 주소 : developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/%EC%97%B0%EC%82%B0%EC%9E%90_%EC%9A%B0%EC%84%A0%EC%88%9C%EC%9C%84
반응형
'인프런 강의 학습 > 자바스크립트 비기너' 카테고리의 다른 글
자바스크립트 학습 8일차 (0) | 2020.12.11 |
---|---|
자바스크립트 학습 7일차 (0) | 2020.12.10 |
자바스크립트 학습 5일차 (0) | 2020.12.08 |
자바스크립트 학습 4일차 (0) | 2020.12.03 |
자바스크립트 학습 3일차 (0) | 2020.12.02 |