제어문

 

코드블록 {}은 세미콜론 안 붙힘

 

if(조건){

 

}

 

삼항 비교 연산자?

 

조건 ? 참일 때 출력 값 : 겆시일 때 출력 값

 

활용

 

num = 0;

num ? : (num > 0 ? '양수' : '음수';) : '영';

 

switch case

 

num = 3;

switch(num){

 

case 1:  내용

break;

case 2:  내용

break;

case 3:  내용

break;

default: 내용

break;

 

}

break 없으면 참이 나왔을 때 부터 아래 case 다 참으로 만족해서 실행함

 

 

for(var i=0; i < 5; i++){

 

}

while(조건){

 

 

}

 

do{

 

}while(조건)

무조건 한번은 실행

 

break는 반복문이나 이름붙히는 거...있었는데 뭐였더라  아무튼 이 두곳에서 사용 가능

이름 붙히면 좋은점 이중 삼중 반복문일 때 하나하나 break; 안걸고 이름 붙힌 곳으로 바로 이동해서 빠져나갈 수 있음

 

명시적 타입변환과 암묵적 타입변환

 

명시적 타입변환 문자열 String(), ().toString 

숫자열 Num(), parseInt(), parseFloat()   

불리언 Bolean()    

 

암묵적 타입변환 

 

1 + '' = '1'

1 + '20' = '120'

1 * '20' = 20

1 - '20' = -19

1 / '1'  = 1

 

불리언 

 

0 false

1  true

'0' true

'' false

'-0' true

NaN false

undefined false

null false

 

단축평가

 

'Dog' && 'Cat'   -> 'Cat' 출력

'Dog' || 'Cat'   -> 'Dog' 출력

  

논리곱에서 좌항이 참이면 우항까지 참이여야 참이다. 이걸 출력하면 결과를 결정하는 우항이 출력된다.

논리합에서 좌항이 참이면 우항까지 볼 필요 없이 참이다. 이걸 출력하면 결과를 결정하는 좌항이 출력된다.

 

null && 'Cat' -> null 출력

null || 'Cat'  -> Cat 출력

 

논리곱에서 좌항이 거짓이면 우항까지 볼 필요 없이 거짓이다. 이걸 출력하면 결과를 결정하는 좌항이 출력된다.

논리합에서 좌항이 거짓이더라도 우항이 참이여야 참이다. 이걸 출력하면 결과를 결정하는 우항이 출력된다.

 

falsy값 검사할 때 유용

 

이름 기억 안남

사용법 ?. 

좌항이 falsy값이면 undefine 출력 아니면 우항 출력이었나?

 

이름 기억 안남

 

사용법 ??

undefine, null  구별가능, 맞으면 우항 출력이었나? 찾아봐야겠다.

undefine, null 아닌 falsy값은 그대로 좌항이 나온다 

 

객체 

 

객체이름 {

키: 키값 

};

객체 {}는 코드블록아님 ; 붙여야함

키랑 키값을 합쳐 프로퍼티라 한다.

객체이름이나 키 값도 식별자 명명법에 따라야함

함수도 키값으로 받을 수 있다.

값은 다 프로퍼티에 들어 갈 수 있다.

키값은 명명법 안따르면 객체접근방식이 객체이름.키 방식과 객체이름.['키'] 방식 중

두번째 방식으로만 접근가능

 

수정과 동적생성

 

추가방식과 수정은 코드에 객체이름.키 = 키값 쓰면 된다.

안에 키값이 있으면 키값을 수정할 것이고 없으면 새로 생성된다.

 

축약방식

 

var x  =  1;

var y  =  2;

 

temp{

 

x : x  // 1

y : y  //  2

};

 

var x  =  1;

var y  =  2;

 

temp{

 

x   // 1

y   //  2

};

 

 

 var i = 0;

temp{

 

class + '-' + i++ : i;

class + '-' + i++ : i;

class + '-' + i++ : i;  

};

이런 방식도 가능 

temp{

 

 pluse : function(x, y){

return = x + y 

};

 

temp{

 

plus(x, y){

return = x + y 

};

이건 좀 헷갈리네 함수 줄여서 프로퍼티 만들 수 있음

 

원시값과 객체

 

원시값은 불변임 변수에 넣은 값이 달라진다 할 수 있는데 그건 변수가 새로운 메모리에 다시 값을 담은 거임

메모리에 들어간 원시값은 변하지 않는다. 

 

상수와 문자열이 있다.

 

문자열이 배열을 닮아서 상수같은 원시값이랑 차이가 있었는데 기억이 안난다 

일단 배열처럼 인덱스로 접근가능한데 수정은 불가능임

 

객체는 수정가능하다.  원시값은 변수에 담으면 임의의 메모리에 값을 담지만 

객체는 임의의 메모리에 메모리주소를 담는다. 

그 주소를  따라가면 객체가 나옴

 

이 차이는 원시값은  var y =1; var x = y;  y= 50; 을 해도 x값은 변하지 않는다.

y = 1; x = 1; y = 50; 다 다른 메모리에 담긴다. 하나를 수정해도 다른 값에 영향이 없음

 

객체는 값 대신 메모리 주소를 담기 때문에  객체 y선언 x = y; 상태일 때 둘다 다른 메모리주소에 담기지만

추적해보면 둘다 같은 객체가 담긴 메모리주소에 접근하게 된다. 그래서 하나를 수정하면 다른 하나 역시 변한다.

원시값이 확실히 안정성이 높지만 객체는 워낙 자원을 많이 차지하기에 새로 담기엔 부담스럽다 그래서 이런 방식을 씀

 

 

 

 

 

'진행중 > 백지쓰기[복습]' 카테고리의 다른 글

백지쓰기 6일차  (0) 2022.09.04
백지쓰기 5일차  (0) 2022.08.23
백지쓰기 3일차  (0) 2022.08.20
백지쓰기 2일차  (0) 2022.08.19
백지쓰기 1일차  (0) 2022.08.18

+ Recent posts