목차
■ 변수 연산 및 타입
- typeof <변수>라고 하면 타입이 뜸. 예: console.log(typeof 3); console.log(typeof "xxx");
- 개인 코딩에서는 굳이 typeof를 사용할 일이 없을 테지만, 단체프로젝트나 api통신등에 따라 받아온 변수를 타입에 따라 알맞게 처리해야할 때 사용된다.
- boolean은 true, false라고 기입 (자바처럼, 전체 소문자)
- 숫자를 0으로 나누면 ZeroDivisionError가 아니라 Inf 반환
- 문자열/3 등의 잘못된 연산을 하면 에러가 뜨는 것이 아니라 NaN이 반환
- null은 존재하지 않은 값, undefined는 값이 미할당일 때 뜸.
let x; console.log(x); 라고 하였을 때 undefined가 뜸
let x = null; console.log(x);라고 하였을 때 null이 뜸
그런데 typeof undefined는 "undefined"라고 뜨는데, typeof null은 "object" (=객체형) 라고 뜸 주의
참고로 null은 객체형이 아닌데도 불구하고 객체형이라고 뜨는데, 이는 초기 자바스크립트의 오류임. - 객체형 과 심볼형은 추후에 설명
(링크삽입) - 변수타입 형변환은 Boolean(), Number(), String()으로 가능
■ 계산
- 파이썬처럼 문자열*3을 했을 때 해당 문자열이 반복해서 붙여지지는 않음. 단 문자열+문자열은 서로 concatenate됨.
- 문자열 + 숫자형 + 문자열을 했을 때엔, 숫자형이 문자열로 변환됨.
console.log("300" + 200) 이던 console.log(300 + "200")이던 500이 아닌 300200이 뜸. - 문자열/숫자는 문자열이 숫자로 자동변환됨. 이러한 것을 자동형변환이라고 함.
console.log("9080"/2);를 하면 4540이 뜸. console.log("8"/"2");라고 하면 4가 뜸 - 연산은 무조건 좌측에서 우측으로 넘어가면서 순차적인 계산을 하는 것이 아님. 곱하기 나누기가 더 우선권을 가짐
그래서 console.log(3 + 10 *3);은 39가아닌 33이 뜸 - 자바처럼 num++ 이나 ++num도 가능. num2 = num++;의 num2는 num이 증가되기 직전의 값이 저장됨.
■ 비교연산 / IF / CONDITIONAL
- if 절 포맷은 자바와 유사함:
if (<조건1>) {
<결과1>;}
else if (<조건2){
<결과2>;}
else {
<결과3>;} - OR이나 AND라고 표기할 수 도있고, ||이나 &&라고 표기할 수도 있음. not은 느낌표(!)를 붙이면 됨
- OR같은 경우 i번째 조건이 참일 경우 i+1번째 조건식을 보지 않고, AND의 경우 i번째 조건이 false인경우 i+1 조건을 검사하지 않으니, 성능 최적화 문제를 고려하여 코드를 짤 것
- "1" == 1은 true 반환임. 만약 타입까지 고려하여 비교하려면 "1" === 1이라고 외칠 것.
==동급 연산자, ===는 일치연산자라고 부름 - switch 문법도 자바스크립트 사용 가능
■ 반복문 / FOR / WHILE / ITERATION
- for loop 포맷 역시 자바와 유사함
for (let i = 0 ; i < 10 ; i ++) {
<반복할코드>}; - while, do while, continue, break 다 자바스크립트 사용 가능한 문법