TIL JS 3일차

Dahoon Lee·2021년 9월 19일
0

TIL_JavaScript

목록 보기
4/5
post-thumbnail

Immutable / Mutable

변하지 않는 자료형: primitive types, frozen object( i.e. object.freeze() )

변할 수 있는 자료형: 기본적으로 js에서는 mutable.
(위의 경우 제외한 대부분)

primitive types

number, string, boolean, null, undefined, symbol, object, box container, function, first-class function


Operator

1. 스트링 합치기

일반 연산하듯이 가능

console.log('my' + 'cat');
console.log('1' + 2); //2가 문자로 변환되어 나옴 출력 = 12
console.log(`string literals: 1+2 = ${1 + 2}`); //백틱 활용 

2. 연산

사칙연산, 비교연산, 선-후치 연산은 아는대로.

3. 논리연산

연산을 효율적으로 처리하기 위해
여러 식들이 있을 경우 참 거짓을 판별할 때
순차적으로 식들을 판별함.

  • or 은 순차적으로 식을 판별하되, 앞에 하나라도 true로 판별되면 그 뒤 식은 무시하고 true를 반환.

  • 위와 비슷한 원리로 and는 순차적으로 판별하되 앞에서 하나라도 false가 나오면 그 뒤의 식은 무시하고 false를 반환.

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

console.log(`or: ${value1 || value2 || check()}`);

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

// or 연산에 해당하는 구문에서 순차적으로 논리식 확인.
// or은 하나라도 true면 true이기 때문에 앞선 식이 창이라면 굳이 그 뒤에 식의 참.거짓 여부를 판별하지 않음.

//따라서 위의 코드에서는 check함수가 실행되지 않음.

위를 이용해 효율적이게 코드를 짜기 위해서는 보통 단순히 참, 거짓을 나타내는 식은 앞에 두고 expression이나 function처럼 조금 자원소모가 필요한 식을 뒤에 배치한다.

and를 이용한 표현식

//추가로 object의 null 체크를 하고, 안전하게 object의 변수 값을 받아올 때

if(nullableObject != null){
     nullableObject.something;
}
//이런식으로 해야하지만 간편하게 and연산을 이용하여
//nullableObject && nullableObject.something 이런식으로 null체크를 할 수 있다.

Equality

//3. equality

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

// == loose equality, with type conversion

console.log(stringFive == numberFive);
//true
console.log(stringFive != numberFive);
//flase


// === strict equality, no type conversion

console.log(stringFive == numberFive);
//false
console.log(stringFive != numberFive);
//true

loose equality는 느슨하게 string 5와 숫자 5의 비교도 형변환을 해서 판별해준다.

하지만 strict 'use strict'로 봤듯이 꼼꼼하게(type까지 포함해서) 판별해준다.

//object equality by reference
const ellie1 = {name: 'ellie'};
const ellie2 = {name: 'ellie'};
const ellie3 = ellie1;
console.log(ellie1 == ellie2); //false 1과 2의 reference가 다름.
console.log(ellie1 === ellie2); //false
console.log(ellie1 === ellie3);  //true 1과 3의 3이 1의 reference value를 받았기 떄문에 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

삼항연산자

문법: (조건식 ? 참일 경우 실행: 거짓일 경우 실행)

반복문

while

switch

for

profile
뭐든 많이 해보고 싶은 개발자

0개의 댓글