웹프로그래밍/js

코딩의 기본 operator, if, for loop 코드리뷰 팁(드림코딩 by 엘리님 유튜브 강의)

이바다강 2022. 3. 8. 19:23

+ 전 강의 내용 추가

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에 안 좋음 피하는 게 좋다!~~