티스토리 뷰

이선 브라운의 러닝 자바스크립트 책을 학습하고 기억해둘 만 한 부분을 야생학습하여 정리하였습니다.

제어문

블록 문 

엄밀히는 제어문이 아니지만 제어문과 함께 쓰입니다. 문 여러 개를 중괄호로 묶은 것이며 JS는 이들을 하나의 단위로 취급합니다.

{
	console.log("statement 1");
	console.log("statement 2");
}

블록문은 제어문과 함께 쓸 때 유용하게 사용할 수 있습니다. 제어문 내에서 사용되는 일반적인 개념임에도 불구하고 JS에서는 일부러 파트를 떼어 설명하는 이유는 차후에 클로저나 유효범위를 좀 더 쉽게 설명하기 위함인 듯 합니다.

 

while 루프

let funds = 50;

while(funds > 1 && funds < 100) {
	//돈을 겁니다.
    
    //주사위를 굴립니다.
    
    //그림을 맞췄으면 돈을 가져옵니다.
}

do while 루프

while 루프와의 차이는 시작할 때 조건을 검사하지 않고 마지막에 검사합니다.

do while 루프는 바디를 최소 한 번은 실행하려 할 때 사용합니다.

 

for 루프

for 루프가 가장 잘 어울리는 경우는 어떤 일을 정해진 숫자만큼 반복하려 할 때, 특히 그 일을 지금 몇 번째 하는지 알아야 할 때.

const hand = [];
for(let roll = 0; roll < 3; roll++){
	hand.push(randFace());
}

 

for in 루프

객체의 프로퍼티에 루프를 실행하도록 설계된 루프입니다.

for(variable in object){
	statement
}

 

 

if, if else 문

let total = 0;

if (total === 0){
	console.log("total is 0");
} else {
	console.log("total is not 0");
}

switch 문

expression을 평가한 뒤 그에 일치하는 첫 번째 case를 찾아서 break, return, continue, throw를 만나거나 switch문이 끝날 때 까지 실행합니다.

switch(total){
	case 1:
    	// statement 1
      	break;
    case 2:
    	// statement 2
        break;
    default: // default는 필수가 아님.
    	// statement 3
        break;
}

 

제어문의 예외

break

루프 중간에 빠져나감

continue

루프에서 다음 단계로 건너 뜀

return

제어문을 무시하고 현재 함수를 즉시 빠져나감

throw

예외 핸들러에서 반드시 처리해야 할 예외를 일으킴( 예외 핸들러는 제어문 바깥에 있어도 상관없음)

 

표현식과 연산자

표현식은 값으로 평가될 수 있는 문입니다. 이를 이용하여 다양한 로직을 짤 수 있습니다.

 

비교 연산자

일치함(===)과 동등함(==), 대소 관계의 세 가지 타입으로 나뉩니다. 이 때 일치란 두 값이 같은 객체를 가리키거나 같은 타입이고 값도 같다면(원시 타입) 이 값을 일치한다고 합니다. 두 값의 일치 여부를 확인할 때는 === / !== 을 사용합니다. 동등이란 두 값이 같은 객체를 가리키거나 같은 값을 갖도록 변환할 수 있다면 두 값을 동등하다고 합니다. "33"과 33을 동등하다고 보기 때문에, 변환 문제에서 부작용이 생길 수 있어 권장되지 않습니다.

 

숫자 비교

NaN은 자신을 포함하여 무엇과도 같지 않습니다. NaN인지 확인하기 위해선 내장함수 isNaN을 사용해야 합니다.

 

자바스크립트의 숫자는 모두 부동소수점 방식이기 때문에 정수를 비교할 때 Number.EPSILON이라는 매우 작은 값을 의미하는 숫자형 상수를 기준으로 삼아 숫자를 구별합니다.

let n = 0;
while(true){
	n += 0.1;
    if(Math.abs(n - 0.3) < Number.EPSILON) break;
}
console.log(`Stopped at ${n}`);

단축평가

불리언 피연산자를 사용하면 논리 연산자는 항상 불리언을 반환합니다. 피연산자가 불리언이 아니라면, 결고ㅘ를 결정한 값이 반환됩니다.

문자열 병합

+ 연산자는 덧셈과 문자열 병합에 모두 사용됩니다. 피연산자의 타입을 보고 어떤 연산을 할지 결정하는 데 피연산자 중 하나라도 문자열이면 문자열 병합을 수행합니다.

 

논리 연산자

논리 연산자는 불리언 값만 다룰 수 있으며 불리언에는 false와 true 두 가지 값밖에 없습니다. JS에서는 불리언이 아닌 값을 나름의 규칙으로 불리언 값으로 바꿉니다.

 

undefined

null

false

0

NaN

''(빈 문자열)

을 제외하고는 모두 참 값은 값입니다.

 

 

쉼표 연산자

쉼표 연산자는 표현식을 결합하여 두 표현식을 평가한 수 두 번째 표현식의 결과를 반환합니다. 표현식을 하나 이상 실행해야 하지만 값으로 필요한 것은 마지막 표현식의 결과뿐일 때 쉼표 연산자를 유용하게 쓸 수 있습니다.

let x = 0;, y = 10, z;
z = (x++, y++);

z의 값은 y++가 반환하는 값이 들어갑니다.

 

typeof 연산자

피연산자의 타입을 나타내는 문자열을 반환합니다. 문제는 typeof 연산자는 typeof null을 "object"라고 판단하는 데 이는 이해가 쉽게 가지 않는 결과지만 이렇게 정해졌기 때문에 숙지하고 넘어가야 합니다. 또한 typeof 연산자는 배열과 배열 아닌 객체 또한 정확히 구분하지 못합니다. ( typeof [] 는 "object"를 반환합니다.)

 

해체 할당

const obj = { b: 2, c: 3, d: 4};

//해체 할당
const {a, b, c} = obj;
a;	//undefined
b; 	//2
c;	//3
d;	//ReferenceError


-------------------

const obj = {b: 2, c: 3, d: 4};
let a, b, c;

({a, b, c} = obj);
//괄호를 쓰지 않으면 자바스크립트는 표현식 좌변을 블록으로 해석하기 때문에 괄호를 씁니다.

객체를 해체할 때는 반드시 변수 이름과 객체의 프로퍼티 이름이 일치해야 합니다. a 프로퍼티가 없으므로 undefined를 할당받습니다. 해체 할당에 d라는 프로퍼티가 없으므로 d는 선언조차 되지 않았습니다.

'Running JS 요약' 카테고리의 다른 글

JS - 객체와 객체지향 프로그래밍  (0) 2021.01.11
JS - 배열  (0) 2021.01.06
JS - 스코프  (0) 2021.01.05
JS - 함수  (0) 2021.01.04
JS - 리터럴과 변수, 상수, 데이터 타입  (0) 2020.12.23
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함