1. 변수 선언, 대입 연산자
변수 선언 키워드 [ var / let / const ]
- var 문은 변수를 선언하고, 선택적으로 초기화할 수 있다.
- "전역변수" : let과 유사하지만 스콥의 범위가 전역에 적용된다.
- var hoisting : 변수가 선언되기 전에 사용이 가능하다는 것은 변수 선언이 함수 또는 전역 코드의 상단으로 이동되는 것과 같다. 이 '이동되는 것과 같게 인지하는 것'을 호이스팅(hoisting)이라고 부른다.
- "지역변수" : 블록 스콥의 범위를 가지며, 선언과 동시에 임의의 값으로 초기화할 수 있다.
- 프로그램 최상위에서 사용 시, var와 달리 let은 전역 객체에 속성을 추가하지 않는다.
// let과 var의 스콥 차이를 이해하지 못했을 때 발생할 수 있는 오용 case
let x = 1;
{var x = 2;} // 재선언으로 인한 SyntaxError 발생
대입 연산자 키워드 [ = ]
- 키워드 좌측에는 대입할 변수, 우측에는 대입할 값을 입력하여 사용
- [ += ][ -= ] [ variable++ ][ variable-- ] 와 같은 구문설탕 참고
구문설탕(Syntactic sugar)
- 더 쉽게 읽거나 표현할 수 있게 설계된 프로그래밍 언어 내의 '구문'
* 일반적인 구문보다 더욱 읽고 쓰기 쉽기 때문에 "인간이 사용하기에 언어를 ✌️더 달콤✌️하게 만든다"고 해서 구문설탕이다 😂
- 일반적으로 구분설탕은 '일반적인 작업의 약어'라고 보면 된다.
ex.
```
get_array(Array, vector(i,j))
Array[i,j]
set_array(Array, vector(i,j), value)
Array[i,j] - value
```
2. 비교 연산자
1) ===
- 양쪽의 위치한 값이 같은 경우 True, 다른 경우 False 로 평가
2) !==
- 양쪽에 위치한 값이 같은 경우 False, 다른 경우 True로 평가
- ! = Not
3) > , <
: 좌측 값이 더 클 때 True, 같거나 우측 값이 더 클 때는 False
- < : 우측 값이 더 클 때 True, 같거나 좌측 값이 더 클때는 False
4) >= , <=
- = 기호를 통해 값이 같을 때에도 True로 평가
5) == , !=
- == 와 === 는 같은 기능을 하는 연산자이지만 지양할 것
- != 와 !== 또한 같은 기능을 하는 연산자이지만 지양할 것
- 자바스크립트(javascript)는 "자동 형변환" 기능을 가졌기 때문에 편리하지만 버그 발생률이 높다.
- 자동 형변환이 적용되는 경우, '10' == 10 값은 True
(숫자 자료형을 가진 값에 자동 형변환이 적용되는 경우, 문자열로 반환이 가능하다고 여겨 '10' === '10' 으로 인지됨)
- == , != 2가지 모두 버그를 유발하기 쉬운 방식으로 === , !== 를 우선적으로 사용하자.
3. 자료형
1) Boolean (불리언) : 원시 자료형 / True, False
2) String (문자열) : 원시 자료형 / 'value', "value"
3) Number (숫자) : 원시 자료형 / 10 (10 !== '10')
4) undefined : 원시 자료형 / 값이 할당되지 않은 변수
5) null : 원시 자료형 / 어떤 값이 "비어있는" 값
6) Object (객체) : {key1: value, ke2: value}
- value에는 모든 자료형의 값을 담을 수 있다.
- Python에서 Dictionary 형 = Javascript 의 Object 형
- key를 기준으로 객체에 있는 value에 접근할 수 있다.
- 객체의 key 접근법 👉 Obj.key / obj['key']
1️⃣ 유효한 자바스크립트 식별자를 사용하지 않는 경우에는 반드시 obj['key'] 표현식 사용
2️⃣ 여백(space), 대쉬(-) 등 허용되지않는 문자열은 변수 생성 불가, object key로 사용 시에는 따옴표로 감싸야만 함
7) Array (배열) : [value1, value2, value3]
- Python에서 딕셔너리형(Dictionary) 과 리스트형(List)으로 나누어 불렀었으나, Javascript 에서의 공식 명칭은 'Array'다.
- 배열에는 Index 라는 개념이 존재하며, value에 접근하게 해주는 식별자다. (몇번째 값)
- Index는 0부터 시작한다.
8) NaN (Not a Number의 줄임말) : Number 자료형에 속함
- 숫자가 아닌 값을 숫자로 변환하는 경우 NaN으로 반환됨
- NaN은 다른 모든 값과 비교했을 때 같지 않고, NaN 과 NaN 도 같지 않다.
- NaN의 판별은 [Number.isNaN(), isNaN()]을 이용하면 분명하게 판별이 가능하다.
isNaN() : 현재 값이 NaN이거나, 숫자로 변환했을 때 NaN 인 경우 True
Number.isNaN() : 현재 값이 NaN 일 때만 True
9) 함수 : 기능의 단위를 묶거나 반복되는 코드를 줄이기 위해 사용
4. 불리언 연산
- Truthy한 값은 True로 평가, Falsy한 값은 False 로 평가
- Falsy 값에는 빈 문자열 [''], 숫자 0, 불리언 false, null, undefined, NaN 이 해당하며 Falsy 하지 않은 값은 Truthy 즉 True.
중요하니까 Fals한 값 한번 더👇
빈 문자열 ''
숫자 0
불리언 false
null
undefined
NaN
- 항상 Truthy로 판단되는 자료형 [Array, Object]
- 다른 자료형을 가진 값에 강제로 불리언 연산을 적용하려면 Boolean 함수 사용
Boolean('String') // true
Boolean('') // false
Boolean(undefined) // false
5. 조건문
- 조건문은 조건 충족이 될 때만 특정 구문을 실행한다.
- 논리적인 로직을 표현할 때 가장 중심이 되는 구문, 🌸프로그래밍의 꽃🌸
- 조건에 들어가는 값은 항상 불리언 연산이 적용 된다.
1) if ... else *기본형
if (condition1) // 명령문1
else // 명령문 2
2) if ... else + Block
if (condition1) {
// 명령문 1
} else {
// 명령문 2
}
- 이전 웹개발종합반에서 사용하던 방식은 주로 블락형이다.
3) if ... else + Chaining
if (condition1) {
// 명령문 1
} else if (condition2) {
// 명령문 2
} else {
// 명령문 3
}
if (condition1) {
// 명령문 1
} else {
if (condition2) {
// 명령문 2
} else {
// 명령문 3
}
}
👉 그 외 참조할 개념 [삼항 연산자, switch문]