
해당 벨로그는 드림코딩의 자바스크립트 기초 강의 (ES5+) 4강을 보고 작성한 글입니다.
4강은 기본 연산자, if문, 반복문에 대해서 배운다.
플러스(+) 기호를 이용해서 문자열과 문자열을 합해서 새로운 문자열을 만들어줄 수 가 있다. 문자열에 숫자를 더하게 되면, 숫자가 문자로 변환되어서 합해질 수 있다. 백틱 기호를 활용해서 string literals 도 만들 수 있다. $ 기호를 이용하면 변수 값을 계산해서 문자열 값으로 포함해서 문자열을 만들게 된다. string literals 의 장점은 줄바꿈을 해서 작은따옴표(’) 를 이용해도 그대로 (’) 문자열로 출력된다. 백틱을 이용하는 대신 (’) 를 이용하려면 \' 를 사용하면 (’) 로 인식된다. 특수 문자열 이라고 부르는 데 \’ 외에도 \n (줄바꿈) , \t (탭) 등이 있다.
할당 연산자는 +=, -=, *=, /= 이런 식으로 간추려서 사용하는 경우가 많다.
논리연산자 ( ||or, &&and, !not )
or 는 조건 중에 true 가 제일 처음 나오자마자 연산을 멈춘다 → 그 문항 때문에 조건이 이미 true가 되기 때문이다. 더 이상 연산을 진행해 시간을 낭비할 필요가 없기 때문이다.
and 는 false 가 나오면 false 가 결과가 된다.
or 연산자는 ${value1 || value2 || check()} 에서 처음으로 true 가 나오면, 그곳에 멈춘다. → or의 조건문 중에 하나라도 true 가 있으면 결과값이 true 이기 때문이다.
앞에서 true 가 나오면, 뒤에 조건문은 확인도 하지 않고 바로 결과값을 true 로 반환한다.
check 함수처럼 연산을 많이하는 함수 혹은 복잡한 조건을 조건문 가장 앞에 두게 되면 안된다. → 확인하기 간단한 조건들을 앞에 두고, 복잡한 함수나 조건들을 뒤에 두어 마지막에 마지못해 호출하도록 설계하는 것이 개발에서 가장 효율적이다.
and 연산자는 ${value1 || value2 || check()} 가 모두 true 여야 true 를 반환한다.
그래서 조건 중에 하나라도 false 가 있다면 뒤에 있는 조건을 보지도 않고 false 를 반환한다. and 연산자도 heavy 한 operation 일수록 조건문의 가장 뒤에서 체크하는 것이 가장 효율적이다.
and 연산자는 간편하게 null 체크할 때도 사용한다. object 가 null 이면, false 가 되기 때문에, 뒤의 조건들이 실행되지 않는다. nullableObject 가 null 이 아닐때만, nullableObject 에 something 을 받아온다.
not 연산자는 반환값을 반대로 바꿔준다.
Equality( ==, ! =, ===, ! = = )
loose equality( ==, 2개의 등호) → 타입을 변경해서 검사. 타입이 달라도 값이 같으면 같다고 출력
strict equality( ===, 3개의 등호) → 타입, 값 둘 다 검사. 값과 타입까지 같아야 같음
⇒ 코딩할 때, strict equality 를 사용해야 좋다.
Equality 를 공부할 때, 오브젝트를 좀 더 신경써서 공부할 필요가 있다.
오브젝트라는 값이 탑재될 때 reference 형태로 저장된다.
ellie1, ellie2 가 같은 값을 가지고 있더라도 ellie1, ellie2 에 각각 다른 reference 가 들어있다. 각 reference 들은 서로 다른 오브젝트들을 가르키고 있다.
ellie3 은 ellie1 의 reference 가 할당되니까 ellie1 과 동일한 reference 를 가지고 있게된다. ellie3 에 ellie의 reference 가 대입되어 ellie1 과 동일한 곳을 가르킨다.
switch (값) { case A : a~ break; case B : ~ break; default : ~ break; }
- switch의 값이 A 라면 a 실행 후 break 문으로 빠져나옴
- switch의 값이 B 라면 b 실행 후 break 문으로 빠져나옴
- switch의 값이 A, B 둘다 아니라면, default 실행 후 break 문으로 빠져나옴
⇒ if 사용할 때, switch 사용할 때를 잘 구분해 각각을 사용해야 한다. 둘이 섞이는 경우 없음

Do-While Loop

For Loop

Nested Loop

퀴즈 → 1, 2
for(let i=0; i≤10; i++) {
if(i%2!=0) {
continue;
}
console.log(`${i}`);
}
for(let i=0; i<11; i++) {
if(i>8) break;
console.log(`${i}`);
}