4장 Operator if for-loop

전장 복습

  • Immutable data types: premitive types, frozen objects (i.e object.freeze())
  • Mutable data types : all objects by default are mutable in JS

변하지 않는 데이터 타입 : 기본형 타입, 객체 등 변하는 데이터 타입 : 모든 객체

Operator

  • String concatenation
    console.log('my' + ' cat')
    //my cat
    console.log('1' +2)
    //12 문자열로 반환 
    console.log(`string literals: 1 + 2 = $(1 + 2)`)
    //`` 백틱을 이용하면 변수의 값을 문자열 내로 사용할 수 있다
    //${변수명 또는 숫자} 
    
  • Numeric operators
    console.log(1 + 1) //더하기
    console.log(1 - 1) // 빼기
    console.log(1 / 1) // 
    console.log(1 * 1)
    console.log(1 % 1)
    console.log(1 ** 1)
    
  • Increment decrement opertiors
    • preIncrement
        let ocunter = 2
        const preIncrement = ++counter 
        //counter = counter +1
        //preIncrement = counter
      
    • postIncrement
        let counter = 2
        const postIncrement = counter++
        //postIncrement = counter
        //counter = counter + 1
      
    • preDecrement
        let counter = 2
        const preDecrement = --counter 
        //counter = counter - 1
        //preDecrement = counter
      
    • postDecrement
        let counter = 2
        const postDecrement = counter--
        //postDecrement = counter
        //counter = counter + 1
      
  • Assingment operators
    let x = 3
    let y = 6
    x += y  // x = x + y
    x -= y
    x *= y
    x /= y
    
  • 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 equal
    
  • logical operators: (or), && (and), ! not
const value1 = false
const value2 = 4 < 2


// || (or), finds the first truthy value
console.log(`or: ${value1 || value2 || check()}`)
//or는 제일 처음이 참이면 멈춘다
//제일 간단한것을 앞으로 놓고 복잡도가 높은 함수는 뒤로 넣는다


// $$ (and), finds the first falsy value
console.log(`and: ${value1 && value2 || check()}`)
//and는 모든것이 같아야 실행된다
//nullableObject && nullableObject.somthing
//true값을 반환하는 객체값이 true 면 somthing 인스턴스를 불러온다
//아래의 코드와 같다

if(nullableObject != null){
    nullableObject.somthing
}

function check(){
    for(let i =0; i< 10; i++){
    //wasting time
    console.log('what')
    }
    
}
  • Equality
const stringFive = '5'
const numberFive = 5

// == loose equlity, 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 me1 = { name: 'me'}
const me2 = { name: 'me'}
const me3 = me1 
console.log(me1 == me2) // 객체 잠조 주소를 가르키니까 다른 값이다 FALSE
console.log(me1 === me2) // 객체의형이 같아도 참조 주소가 다르니까  FALSE 
console.log(me1 === me2) // 객체의 주소를 다시 받아 왔으니까 같은 값이다 TRUE


// equality - puzzler
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: if
//if, else if, else

const name = 'ellie'
if (name === 'ellie'){
    console.log('you are my father')
} else if ( name === 'coder'){
    console.log('You are the chicken')
} else {
    console.log('unkwon')
}

  • Ternary operator: ?
//condition ? value1 : value2
console.log(name === 'me' ? 'yes' : 'no')
  • Switch statment
//use for multiple if checks
//use 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': //같은 출력값을 나타나게 할때는 생략 가능
    case 'FIreFox':
        console.log('love you!')
        break
    default:
        console.log('same all')
        break
}

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

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




//do while 문은 조건을 나중에 실행 시킨다
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}`)
    }
}

// break, continue
// for 를 끝내는거 break
// if문에서 그냥 continue  하는게 좋음