본문 바로가기
Web 개발/JS

Javascript - operator

by hooni40 2021. 6. 15.
728x90
반응형

안녕하세요, 이번에는 Javascript에서의 operator(연산자) 중 헷갈릴만한 것들에 대해 정리해보겠습니다.

 

1. Increment and decrement operator : 증감 연산자입니다. 전위형(++counter)과 후위형(counter++)으로 나누어져 있습니다. 두 개의 차이는 counter를 1씩 증가시켜주는 것은 동일하지만 반환 값이 차이가 있습니다. 아래코드를 보면서 이해하면 도움이 될 것 같습니다. 전위형counter에 1을 먼저 추가를 시킨 후에 preIncrement에 counter 값을 할당하고, 후위형postIncrement에 counter를 할당시킨 후에 counter에 1을 추가합니다. 그렇기 때문에 아래 코드에서 후위형을 적용하였을 때 postIncrement는 그대로 3이 할당이 되고 그 후에 counter가 1 추가되어 4가 나오게 됩니다.

let counter = 2;
const preIncrement = ++counter;
// counter = counter +1;
// preIncrement = counter;
console.log(`preIncrement: ${preIncrement}, counter: ${counter}`); //둘다 3이 된다
const postIncrement = counter++;
// postIncrement = counter;
// counter = counter +1;
console.log(`postIncrement: ${postIncrement}, counter: ${counter}`); //postIncrement는 3이고 counter는 4가 된다.

2. Logical operators : 논리 연산자입니다. !(not), &&(and), ||(or)가 있습니다.

!(not)뒤의 논리를 뒤집어 주는 역할을 하고, &&(and) 연산자모두 참이면 참을 출력해 주는 연산자이며 첫 번째 false값이 나오게 되면 멈추게 됩니다! ||(or) 연산자하나라도 참이라면 참을 출력해주며 첫 번째 true값이 나오면 멈추게 됩니다.

 

3. Equality : 동등 연산자로 같은지 비교해주는 연산자입니다. 동등 연산자에는 2가지가 있는데요, == ===가 있습니다. ===가 좀더 엄격(?)하게 비교를 해서 type까지 맞아야 같은 값으로 인정해 줍니다. 아래 코드를 보며 설명드리겠습니다.

const stringFive = '5';
const numberFive = 5;

// == loose equality, with type conversion
console.log(stringFive == numberFive); // 값이 5로 같으므로 True
console.log(stringFive != numberFive); // False

// === strict equality, no type conversion
console.log(stringFive === numberFive); // 값은 같지만 type이 string과 number로 달라 False
console.log(stringFive !== numberFive); // True

// object equality by reference
const hoon1 = { name: 'hoon' };
const hoon2 = { name: 'hoon' };
const hoon3 = hoon1;
console.log(hoon1 == hoon2); // 1과 2가 가리키는 ref가 다르므로 Type에 관계없이 False 
console.log(hoon1 === hoon2); // 1과 2가 가리키는 ref가 다르므로 Type에 관계없이 False
console.log(hoon1 === hoon3); // 1과 3은 같은 ref이므로 True

console.log(0 == false); // T
console.log(0 === false); // F (0은 boolean 타입이 아닌 number 타입이므로 F)
console.log('' == false); // T
console.log('' === false); // F (''은 boolean 타입이 아닌 string 타입이므로 F)
console.log(null == undefined); // T
console.log(null === undefined); // F (null은 object 타입이므로 F)

4. Ternary operator : condition ? value1: value2; 

let name = 'hoon'
console.log(name === 'hoon' ? 'yes': 'no'); //name이 'hoon'이기 때문에 'yes'가 출력됨

5. Switch Statement : value 값 체크할 때 사용합니다. 주의해야 할 점으로는 break가 꼭 필요합니다. 아래 코드에서 만약에 case 'IE' 안에 break가 없다면 'Chrome'이나 'Firefox'가 아니어도 'love you!'가 출력됩니다.

const browser = 'IE';
switch(browser) {
    case 'IE':
        console.log('go away!'); // 'IE'이므로 'go away!'가 출력
        break;
    case 'Chrome':
    case 'Firefox':
        console.log('love you!'); // 'Chrome'이나 'Firefox'인 경우 'love you!' 출력
        break;
    default:
        console.log('same all!'); // 위의 Case들에 해당되지 않을 경우 default 값이 실행
        break;
}

6. Loop : 반복문으로 while 반복문과 for 반복문이 있습니다.

while 반복문에는 조건을 먼저 확인하는 while문한번 실행하고 조건을 비교하는 do while문이 있습니다.

// while 문
let i = 3;
while (i > 0) {
    console.log(`while: ${i}`);
    i--;
}

// do while문 (처음에 console.log를 한번 시작 후 조건을 비교) 
i = 3;
do {
    console.log(`do while: ${i}`);
    i--;
} while(i>0);

// for loop , for(begin; condition; step)
for (i = 3; i > 0; i--) {
    console.log(`for: ${i}`);
}

for (let i = 3; i > 0; i = i - 2) {
    // inline variable declaration
    console.log(`inline variable for: ${i}`);
}

// nested loops (이중 반복문도 구현 가능)
for (let i = 0; i < 10; i++) {
    for (let j = 0; j < 10; j++) {
        console.log(`i: ${i}, j: ${j}`);
    }
}

반복문을 잘못 작성하게 되면 무한 Loop에 빠져들게 되는데요, 이것을 나오게 해 주는 것이 break와 continue입니다. break진행 중인 반복문을 종료시켜 주며 continue다음 조건으로 넘어가주게 합니다.

아래 코드에서 continue를 이용해 짝수만 출력하는 반복문(2로 나눌 때 나머지가 0이면 출력, 아니면 continue로 다음 조건으로 넘어감)과 7까지 출력하는 반복문(8이 되면 break를 통해 반복문 종료)을 살펴보면 조금 더 이해하기 쉬울 것 같습니다!

// break, continue
// 01. iterate from 0 to 10 and print only even numbers(use continue)
for (let num = 0; num <= 10; num++) {
    if (num % 2 == 0) {
        console.log(num);
    } else {
        continue;
    }
}
// 02. iterate from 0 to 10 and print numbers until reaching 8 (use break)
for (let num = 0; num <= 10; num++) {
    if (num == 8) {
        break;
    } else {
        console.log(num);
    }
}
728x90
반응형

'Web 개발 > JS' 카테고리의 다른 글

Javascript - class(1)  (0) 2021.06.19
Javascript - object  (0) 2021.06.17
Javascript - function  (0) 2021.06.16
Javascript - Variable  (0) 2021.06.14
<Script> / differ 속성  (0) 2021.05.24

댓글