TIL 14. JS (Operator)

📌 String concatenation

console.log('my' + ' cat');
console.log('1' + 2);
console.log(`string literals: 1 + 2 = ${1 + 2}`);

이 경우 모두 string타입의 값으로 console창에 출력이 된다.
my cat, 12, string literals: 1 + 2 = 3으로 각각 출력된다.


📌 Numeric operators

console.log(1 + 1); // add 덧셈
console.log(1 - 1); // substract 뺄셈
console.log(1 / 1);  // divide 나눗셈
console.log(1 * 1); // multiply 곱셈
console.log(5 % 2); // remainder 나머지
console.log(2 ** 3) // exponentiation 제곱

이 경우 모두 number 타입의 값으로 console창에 출력이 된다.
1, 0, 1, 1, 1, 8로 각각 출력된다.


📌 Increment and decrement operators

let counter = 2;
const preIncrement = ++counter;
// counter = counter + 1;    
// preIncrement = counter;
// preIncrement = 3, counter = 3
-----------------------------------
const postIncrement = counter ++;
// postIncrement = counter;
// counter = counter + 1;
// postIncrement = 3, counter = 4

주석으로 설명되어 있듯이 ++가 변수 앞에 붙어 있으면 먼저 counter라는 변수에 1을 더한 뒤, 선언하려고 preIncrement라는 변수에게 counter의 더한 값으로 선언한다.

반대로 ++가 변수의 뒤에 붙어 있으면 counter라는 변수는 먼저 새롭게 선언하려고 하는 변수에게 자신의 값으로 선언하고 그 뒤에 자신이 1을 더한다.

Decrement에서도 이와 같이 연산한다.


📌 Assignment operators

let x = 3;
let y = 6;
x += Y; // x = x + y
x -= y; // x = x - y
x *= y; // x = x * y
x /= y; // x = x / y

📌 Comparison operators

console.log(10 < 6);
console.log(10 <= 6);
console.log(10 > 6);
console.log(10 >= 6);

말 그대로 비교하는 연산자이다. 이에 대한 값은 boolean 타입의 값으로 출력된다.


📌 Lofical operators

☝🏻 || (or)

<const value1 = false;
const value2 = 4 < 2;
const value3 = true;
console.log(`or: ${value1 || value2 || value3}`);

or은 조건에 해당되는 변수중 값이 하나라도 true이면 true의 값을 출력한다.

☝🏻 && (and)

<const value1 = false;
const value2 = 4 < 2;
const value3 = true;
console.log(`or: ${value1 && value2 && value3}`);

and는 조건에 해당되는 변수 중에 하나라도 false이면 false를 출력한다.

☝🏻 ! (not)

<const value = true;
console.log(!value);

not은 해당 변수의 값을 반대로 출력한다. 따라서 console에 출력되는 value의 값은 true에서 false로 바뀌게 된다.


📌 Equlaity

const stringFive = '5';
const numberFive = 5;
----
//loose quality, with type conversion
console.log(stringFive == numberFive);  --> true
console.log(stringFive != numberFive);  --> false
-----
//strict equality, no type conversion
console.log(stringFive === numberFive); --> false
console.log(stringFive !== numberFive); --> true

==와 !=은 타입에 상관없이 값이 같으면 true, 아니면 false를 가진다.
반대로, ===와 !==은 타입도 같아야 true, 아니면 false를 가진다.

//object equality by reference
const value1 = {key: 'value'};
const value2 = {key: 'value'};
const value3 = value1;
console.log(value1 == value2); --> false
console.log(value1 === value2); --> false
console.log(value1 === value3); --> true

객체에서는 한번 더 생각해야할 부분이 있다. value1과 value2는 사실상 key와 value값이 같지만, 그 전에 보이지는 않아도 각 reference가 다르다. 그렇기 때문에 value1와 value2는 ==이든 ===이든 false가 된다.
하지만 value3은 value1이다 라고 선언했기 때문에 두 변수는 같은 reference를 갖는다.


좋은 웹페이지 즐겨찾기