반응형

# 자바스크립트 학습

# 관계 연산자 (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" ? "같음" : "다름");

=>
같음
다름

# 연산자 우선 순위

 

연산자 우선순위

연산자 우선순위는 연산자를 실행하는 순서를 결정합니다. 우선순위가 높은 연산자가 먼저 실행됩니다.

developer.mozilla.org

 

반응형

+ Recent posts