연산자

Yeonkor·2020년 9월 11일
0

Javascript

목록 보기
4/12

1. 산술 연산자

산술 연산자는 숫자를 먼저 , 피연산자로 받은 후 그 값에 따른, 하나의 숫자 값을 반환한다.

덧셈 ( + )


// Number + Number -> 합
1 + 2 // 3

// Boolean + Number -> 합
true + 1 // 2

// Boolean + Boolean -> 합 
false + false // 0 , false는 0 의 값을 갖는다.

// Number + String -> 연결
5 + "foo" // "5foo" , 문자와 숫자의 결합은, 숫자를 문자열로 바꾼다.

// String + Boolean -> 연결
"foo" + false // "foofalse" , 문자열과의 만남은 불리언타입 역시 문자열로 변환된다.

// String + String -> 연결
"foo" + "bar" // "foobar"

// 

뺄셈 ( - )


5 - 3 // 2
3 - 5 // -2 
"foo" - 3 // NaN , 덧셈과 다르게 다른 타입끼리의 감산 연산은 그 결과가 NaN이 출력된다.
true - 3 // -2 , 불리언타입의 연산은 가능하다.

나눗셈 ( / )


1 / 2      // JavaScript에선 0.5 
// (양쪽 피연산자 모두 명시적인 부동소수점 숫자가 아님)

1.0 / 2.0  //   0.5 -> 정확한 값 산출을 위해선 명확한 부동소숫점을 쓰도록 버릇들이는게 좋을 것 같다.

2.0 / 0    // JavaScript에서 Infinity
2.0 / 0.0  // 동일하게 Infinity
2.0 / -0.0 // JavaScript에서 -Infinity

곱셈 ( * )

2 * 2 // 4
-2 * 2 // -4
Infinity * 0 // NaN 
Infinity * Infinity // Infinity
"foo" * 2 // NaN , 문자열과 숫자의 처리 결과값

나머지 ( % )


12 % 5 // 2 
-1 % 2 // -1
NaN % 2 // NaN
1 % 2 // 1
2 % 3 // 2
-4 % 2 // -0 , 음의 0값이다. 이 부분이 독특하다.
5.5 % 2 // 1.5

거듭제곱 ( ** )

좌항 피연산자를 밑, 우항 피연산자를 지수로 값을 생성한다. 연산자는 우결합성을 가집니다.

2 ** 3 // 8
3 ** 2 // 9
3 ** 2.5 // 15.588457268119896
10 ** -1 // 0.1
NaN ** 2 // NaN

2 ** 3 ** 2 // 512
2 ** (3 ** 2) // 512
(2 ** 3) ** 2 // 64

2. 증가 연산자(++)

단항 연산자이며 피연산자값에 1을 더합니다. 만약 연산자를 피연산자 앞(++x)에 사용하면, 피연산자에 1을 더한 값을 반환합니다. 만약 연산자를 피연산자 뒤(x++)에 사용하면, 피연산자에 1을 더하기 전 값을 반환합니다.


// 접미사 

let suffix = 31;
plusfix = suffix++; // plusfix = 31, suffix = 32

// 접두사

let prefix = 45;
adfix = ++prefix; // prefix = 46 , adfix = 46

3. 감소 연산자(--)

단항 연산자입니다. 피연산자로 부터 1을 뺍니다. 반환값은 증가 연산자와 유사합니다.


// 접미사 

let suffix = 12;
minusfix = suffix--; // minusfix = 12, suffix = 11

// 접두사

let prefix = 34;
delfix = --prefix; // delfix = 33, prefix = 33

4. 복합 대입 연산자

연산과 대입이 복합적으로 이루어지는 연산자입니다.

두 줄이상의 코드를 깔끔하게 정리할 수 있으며, 일반적인 수학에서의 사칙 연산과 그 연산자의 의미가 프로그래밍에서는 이 연산자부터 본격적으로 다르다는 것을 느꼈습니다.

종류에는 '+=', '-=', '*=', '/=', '%='가 있습니다.

A = 14;
B = 12;

// 실제 코드처리는 동기적으로 나열하지 않고, 일회씩 처리하여 결과를 옮겨왔습니다.

result1 = A += B; // A = 26 , A = A + B
result2 = A -= B; // A = 2  , A = A - B
result3 = A *= B; // A = 168  , A = A * B
result4 = A /= B; // A = 1.1666666666666667 , A = A / B
result5 = A %= B; // A = 2 ,  A = A % B
 

5. 비교 연산자

JS는 엄격비교, 형변환 비교를 따른다.
엄격 비교 (===)는 피연산자들끼리 같은 자료형과 내용이 일치해야 참이다. 추상비교 (==)는 두 피연산자를 같은 자료형으로 일치시킨 후 , 내용을 비교한다.

문자열 ->

같은 문자 시퀀스, 같은 길이,같은 위치에 같은 문자라면 일치한다.

숫자 ->

같은 숫자 값이면 일치한다. NaN은 자기 자신을 포함한 그 무엇과도 동등하지 않습니다. +0과 -0은 서로 일치한다.

불리언 ->

두 피연산자의 값이 true거나 false이면 일치한다.

객체 ->

객체가 서로 다르다면 ( key,value ) , 그 객체는 동일하지 않다.

Null & undifined ->

null과 undefined는 스스로와 일치하고, 동등하다.

6. 논리 연산자

논리 연산자는 불리언 타입의 값 [ 논리의 참,거짓 ]을 반환한다. 하지만 예외로, &&과 [논리 AND ] || [논리 OR ] 연산자는 피연산자의 한 가지 값을 반환한다. 그러므로 불리언 외의 다른 값과 함께 사용하면 불리언 값이 아닌 것을 반환할 수 있다.

논리 AND (&&)

a1 = true  && true       // t && t returns true
a2 = true  && false      // t && f returns false
a3 = false && true       // f && t returns false
a4 = false && (3 == 4)   // f && f returns false
a5 = 'Cat' && 'Dog'      // t && t returns "Dog" , 'string' 값은 true이다.
a6 = false && 'Cat'      // f && t returns false
a7 = 'Cat' && false      // t && f returns false
a8 = ''    && false      // f && f returns "" , ''는 false 값이다.
a9 = false && ''         // f && f returns false

논리 OR (||)

o1 = true  || true       // t || t returns true
o2 = false || true       // f || t returns true
o3 = true  || false      // t || f returns true
o4 = false || (3 == 4)   // f || f returns false
o5 = 'Cat' || 'Dog'      // t || t returns "Cat"
o6 = false || 'Cat'      // f || t returns "Cat"
o7 = 'Cat' || false      // t || f returns "Cat"
o8 = ''    || false      // f || f returns false
o9 = false || ''         // f || f returns ""
o10 = false || varObject // f || object returns varObject

논리 NOT (!)

n1 = !true               // !t returns false
n2 = !false              // !f returns true
n3 = !''                 // !f returns true
n4 = !'Cat'              // !t returns false

7. 연산자 우선순위

연산자를 실행하는 순서이다. 우선순위가 높은 연산자가 먼저 실행됩니다. 각 연산자마다 고유한 우선순위가 있으며, 다항 연산에, 동일한 우선순위의 연산자가 두 종류 존재할 경우, 연산자의 결합성에 따라 우선순위가 달라진다.

우선순위 표 참조 : 연산자 우선순위 - MDN

profile
CTO를 꿈꾸는 CDO

0개의 댓글