코딩의 기본 operator, if, for loop 코드리뷰 팁(드림코딩 by 엘리님 유튜브 강의)
+ 전 강의 내용 추가
primitive 타입의 경우는 value 값 자체가 메모리에 저장됨
object는 너무 커서 오브젝트를 가리키는 레퍼런스가 메모리에 저장됨
이렇게 되고 엘리가 가리키는 포인터만 잠기고 이름과 나이는 계속 변경 가능함
1. string concatenation
console.log(`my`+`cat`);
console.log(`1`+2);
console.log(`string literals: 1 + 2 = ${1+2}`);
1번 줄은 문자열과 문자열이 합쳐지고
2번 줄은 2는 숫자지만 문자열로 인식하여 "12"라는 결과를 출력한다.
3번 줄은 변수 값을 계산해서 문자열로 출력함
(``는 중간에 공백이나 줄 내림도 인식함)
''를 쓸 거면 /n 줄 내림 /t 탭 등 특수 문자열 검색해서 알아봐야 됨
2. numeric operators
console.log(1 + 1); //더하기
console.log(1 - 1); //빼기
console.log(1 / 1); //나누기
console.log(1 * 1); //곱하기
console.log(5 % 2); //나머지
console.log(2 ** 3); //제곱
3. increment and decrement operators
let counter = 2;
const preIncrement =++counter;
// counter = count + 1;
// preIncrement = counter
let counter = 2;
const preIncrement =counter++;
// preIncrement = counter
// counter = count + 1;
4. = operators
let x = 3;
let y = 6;
x += y; // x = x + y;
5. <= operators
console.log(10 < 6); //작다
console.log(10 <= 6); //작거나 같다
console.log(10 > 6); //크다
console.log(10 >= 6); //크거나 같다
6. logical operators
|| (or), && (and),! (not)등이 있는데
||는 조건 중 하나라도 같은 true를 출력하고
&&는 모든 조건이 true여야 true를 출력하고
! 는 true이면 false, false이면 true를 출력함
console.log(`or: ${value1 || value2 || check()}`);
앞에서부터 확인하는데 앞이 이미 false이면 얘는 false이기 때문에
예를 들어 이렇게 되어있을 때 heavy 한 operators일수록 젤 뒤에서 체크하는 것이 좋다
7. equality
== // 똑같으면 true 반환, 내용만 신경쓰고 타입은 신경안씀(타입을 변경해서 검사함)
!= // 같지않으면 true 반환
=== // 똑같으면 true 반환, 내용을 신경쓰고 타입도 신경씀
!== // 같지않으면 true 반환
이 파트 공부시 object를 신경 써야 되는데
comst ellie1 = { name: 'ellie'};
comst ellie2 = { name: 'ellie'};
comst ellie3 = ellie1;
엘리 1==엘리 2는 false를 출력한다 (이는 각각 다른 레퍼런스를 가지고 있기 때문)
엘리 1===엘리 2는 false를 출력한다 (레퍼런스 값이 다르기 때문에)
엘리 1===엘리 3은 true를 출력한다(엘리 1이 가지고 있는 레퍼런스를 엘리 3가 할당했기 때문)
8. comditional operators : if
if , else if , else 사용
const name = 'ellie';
if (name==='ellie'){
console.log('welcome, ellie');
}
else if (name==='coder'){
console.log('ooh');
}
else{
console.log('lol');
}
9. ternary operators :?
console.log(name === 'ellie' ? 'yes':'no');
엘리가 맞으면 yes를 출력하고 아니면 no를 출력하는 방식을?를 이용해 쉽게 쓸 수 있음
간혹 이걸 묶어서 사용하는 것은 가동성이 떨어짐
10. switch operators
switch (browser) {
case 'IE':
console.log('go away!');
break;
case 'CHROME':
console.log('far away!');
break;
default:
console.log('good!');
break;
}
11. while
let i = 3;
while (i>0) {
console.log(`while: ${i}`);
i--;
}
i=3인데 while이 시작되면 확인을 함 ()에 내용을 보고 그리고 후에 i를 1씩 감소시켜 계속 순환하다가
조건에 부합하지 않으면 실행되지 않음
12. do while
이는 반대임
do{
console.log(`do while: ${i}`);
i--;
} while (i>0);
먼저 실행되고 후에 () 내용을 비교하고 계속 돌지 결정됨(즉 i가 0 이어도 일단 출력하고 멈추게 됨)
13. for loop
for (시작, 조건, 단계)로 구성된다
let i;
for (i=3; i>0; i--){
console.log(`for: ${i}`);
}
for (let i=3; i>0; i--){
console.log(`for: ${i}`);
}
이처럼 let을 내부에 선언할 수 있는데 이렇게 되면 i는 지역변수가 된다
14. nexted loop
for (let i=3; i>0; i--){
for (let j=3; i>0; i--){
console.log(`${i},${j}`);
}
}
이런 식으로 for문안에 for문을 사용할 수 있는데 이는 O(n^2)이 되어버려서 cpu에 안 좋음 피하는 게 좋다!~~