js operator
A A

1. String concatenation (문자열 합치기)

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

console.log("ellie's \n\tbook");

 

2. Numeric operators (숫자들 더하고 빼고 등등)

console.log(1+1);
console.log(1/1);
console.log(1*1);
console.log(5%2);
console.log(2**3);

 

3. Increment and decrement operators

let counter = 2;
const preIncrement = ++counter;
	// counter = counter+1;
	// preIncrement = counter;
console.log(`preIncrement: ${preIncrement}, counter: ${counter}`);

const postIncrement = counter++;
	// postIncrement = counter;
	// counter = counter +1;
console.log(`postIncrement: ${postIncrement}, counter: ${counter}`);

const preDecrement = --counter;
console.log(`preDecrement: ${preIncrement}, counter: ${counter}`);

const postDecrement = counter--;
console.log(`postDecrement: ${postDecrement}, counter: ${counter}`);

 

4. Assignment operators

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

 


5. Comparison operators (<=operators)

console.log(10<6); // less than
console.log(10<=6); // less than or equal
console.log(10>6); // greater than
console.log(10>=6); // greater than or equal

 

6. Logical operators: || (or), && (and), ! (not)

const value1 = false;
const value2 = 4<2;

// || (or), finds the first truthy value
console.log(`or: ${value1 || value2 || check()}`);
function check() {
    for (let i=0; i<10; i++) {
        	//wasting time
        console.log('👻');
    }
    return true;
    	//check라는 아이는 시간 낭비하다가 결국 true로 돌아온다. 
    	// 위에서 value1는 false로 대놓고 설정되어 있고, value2는 뭐 딱 봐도 에바니까 둘 다 false가 됨.
}
	// or 연산자는 처음으로 true가 나오면 거기서 멈춘다! 앞에 있는 value들이 전부 false여서, true인 check값 👻까지 출력이 됨.
	//그렇다면, 👻가 나오기 전에 먼저 true가 나온다면 출력되는 모양은 어떨까? 즉, const value1 = true; 라면? 👻는 출력되지 않음.

// && (and), finds the first falsy value
console.log(`and: ${value1 && value2 && check()}`);
function check() {
    for (let i=0; i<10; i++) {
        	//wasting time
        console.log('👻');
    }
    return true; 
    	// and의 경우 false가 나와버리면 게임 끝. 그냥 false
}

// ! (not) 값을 반대로 바꿔줌
console.log(!value1);

 

7. Equlity

const stringFive='5'; //문자열
const numberFive=5; //숫자

// == loose equality, with type conversion
console.log(stringFive == numberFive); // 타입 달라도 뭐ㅋ 내용물 같으니까 같다고 해줌!! (true 출력)
console.log(stringFive != numberFive); // true의 반대

// === strict equality, no type conversion
console.log(stringFive === numberFive); // 엄격하게 봐서, 타입이 다르니까 너넨 다른 애들이야! (false 출력)
console.log(stringFive !== numberFive);
// strict 사용해서 엄격하게 검사하는 것을 권장

//object equality by reference
const ellie1 = {name: 'ellie'};
const ellie2 = {name: 'ellie'}; 
const ellie3 = ellie1;
	// ellie1과 2는 똑같은 데이터를 갖고 있지만, 실제로 메모리에는 다른 레퍼런스가 들어있고, 이 다른 레퍼런스는 서로 각각 다른 오브젝트를 가리키고 있는 것임.
	// ellie3에는 ellie1의 레퍼런스가 할당되어 있는 것. 즉, 같은 레퍼런스를 공유함. 
console.log(ellie1==ellie2); // 각각 다른 레퍼런스이므로 false
console.log(ellie1===ellie2); // 똑같은 타입이든 아니든 레퍼런스가 다르므로 역시 false
console.log(ellie1===ellie3); // 이 둘은 같은 레퍼런스를 가리키므로 true

// equality - puzzler
console.log(0==false); // 0은 false로 간주 가능
console.log(0===false); 
console.log(''==false); 
console.log(''===false);
console.log(null==undefined); // 같은 것으로 간주 
console.log(null===undefined); // 다른 타입

 

Copyright 2024. GRAVITY all rights reserved