JavaScript

operator, if, for loop

김꼬알 2023. 6. 5. 17:05

Operator

1. String concatenation

console.log('my' + 'cat');    // my cat
console.log('1' + 2);    // 12
console.log(`string literals: 1 + = ${1 + 2}`);    // string literals: 1 + 2 = 3
console.log("ellie's \n \tbook");    // \n 줄바꿈, \t 탭

 

2. Numeric operators

console.log(1 + 1);    // add
console.log(1 - 1);    // substract
console.log(1 / 1);    // divide
console.log(1 * 1);    // multiply
console.log(1 % 1);    // reminder
console.log(1 ** 1);    // exponentiation

 

3. Increment and decrement operators

let counter = 2;
const preIncrement = ++counter;
// counter = counter + 1;
// preIncrement = counter;

const postIncrement = counter++;
// postIncrement = counter;
// counter = counter + 1;

const preDecrement = --counter;
const postDecrement = counter--;

 

4. 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;

 

5. Comparison 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)

  • || (or), finds the first truthy value
console.log(`or: ${value1 || value2 || check()}`);

function check() {
  for (let i = 0; i < 10; i++) {
    console.log('!!!');
  }
  return true;
}

// 맨 첫번째 값부터 확인해서 true 가 나오면 뒤에 값이나 함수는 확인하지 않음
// 따라서 심플한 값을 앞으로, 헤비한 연산, 함수는 뒤쪽으로 배치하는 것이 좋음

 

  • && (and), finds the first falsy value
console.log(`or: ${value1 && value2 && check()}`);

function check() {
  for (let i = 0; i < 10; i++) {
    console.log('!!!');
  }
  return true;
}


// 간편하게 null을 체크할 때 사용 가능
// nullableObject && nullableObject.something
if (nullableObject != null) {
  nullableObject.something;
}

 

  • ! (not), 값을 반대로 변경
console.log(!value1);

 

7. Equality

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

// == loose equality, 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

// object equality by reference
const ellie1 = {name: 'ellie'};
const ellie2 = {name: 'ellie'};    // ellie1과 ellie2는 다른 오브젝트
const ellie3 = ellie1;    // ellie3은 ellie1과 같은 레퍼런스를 가지고 있음
console.log(ellie1 == ellie2);    // false
console.log(ellie1 === ellie2);   // false
console.log(ellie1 === ellie3);   // true
console.log(0 == false);    // true
console.log(0 === false);    // false
console.log('' == false);    // true
console.log('' === false);    // false
console.log(null == undefined);    // true
console.log(null === undefined);    // false

 

 

Conditional operators

1. if

// if, else if, else

const name = 'ellie';
if (name === 'ellie') {
  console.log('Welcome, Ellie!');
} else if (name === 'coder') {
  console. log('You are amazing coder');
} else {
  console.log('unknown');
}

 

2. Tenary operator

// condition ? value1 : value2;
console.log(name === 'ellie' ? 'yes' : 'no');

 

3. Switch statement

  • use for multiple if checks
  • use for for enum-like value check
  • use for multiple type checks in TS
const browser = 'IE';
switch (browser) {
  case 'IE':
    console.log('go away!');
    break;
  case 'Chrome':
    console.log('love you!');
    break;
  case 'Firefox':
    console.log('love you!');
    break;
  default:
    console.log('same all!');
    break;
}

 

4. Loops

// while loop, while the condition is truthy, body code is executed

let i = 3;
while (i > 0) {    // ( ) 안의 조건이 만족할 때까지 반복
  console.log(`while: ${i}`);
  i--;
}
// while: 3
// while: 2
// while: 1

// do while loop, body code is executed first, then check the condition

do {    // do 안의 블럭을 먼저 실행한 후 while 의 조건이 맞는지 확인
  console.log(console.log(`do while: ${i}`);
  i--;
} while ( i > 0);
// do while: 0

// 블럭 안을 먼저 실행하고 싶으면 do while, 조건에 맞는 것만 실행하고 싶으면 while

 

5. for

for(begin; condition; step)

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

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

 

6. nested loop

for (let i = 0; i < 10; i++) {
  for (let j = 0; j < 10; j++) {
    console.log(`i: ${i}, j: ${j}`);
  }
}

 

// break(loop를 완전히 끝내는 것), continue(현재 반복문을 종료하고 다음 문장 실행)

// Q1. 1~10 까지의 숫자 중 짝수인 숫자만 프린트하기(continue) 사용
for (let i = 1; i <= 10; i++) {
  if (i % 2 === 0) {
    continue; 
  }
  console.log i;
}


// Q2. 1~10 까지의 숫자를 프린트하다가 8을 만나면 종료하는 코드 작성(breaK) 사용
for (let i = 1; i <= 10; i++) {
  } if ( i > 8 ) {
    break;
  }
    console.log i;
}