참고 영상: 드림코딩 by 엘리 (https://www.youtube.com/watch?v=OCCpGh4ujb8&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2&index=3)
자바스크립트에서 변수를 선언할 땐 let 키워드 사용
'use strict';
let name = 'yujin';
console.log(name);
name = 'hello';
console.log(name);
아래는 console 창에서 확인한 출력값
중괄호{}를 이용해 생성한 블럭 안에 코드를 작성하면 블럭 밖에선 해당 코드에 접근할 수 없다. 반대로 블럭 밖, 파일 안에 바로 정의하는 변수를 global scope이라고 한다. 이들은 블럭 안과 밖 어디에서나 부를 수 있다.
'use strict';
let globalName = 'global name';
{
let name = 'yujin';
console.log(name);
name = 'hello';
console.log(name);
console.log(globalName);
}
console.log(name);
console.log(globalName);
한 번 선언하면 변경할 수 없는 값.
안전하며, 나중에 다른 사람이 내 코드를 받아 수정할 때 실수를 방지할 수 있다.
const daysInWeek = 7;
const maxNumber = 5;
- primative: 더 이상 작은 단위로 나눠질 수 없는 single item (number, string, boolean, null, undefiedn, symbol)
- object: single item들을 box로 묶어 한 단위로 관리할 수 있게 해주는 것
- function: 자바스크립트에서는 함수도 다른 데이터 타입처럼 변수에 할당이 가능하다. 이를 first-class function이라 부름.
자바스크립트에서는 c나 자바와 달리 number 타입 하나면 모든 숫자 선언 가능. 그리고 let으로 선언하는 경우 number을 쓸 필요도 없이 자동으로 선언이 됨.
const count = 17;
const size = 17.1
console.log(`value: ${count}, type: ${typeof count}`);
console.log(`value: ${size}, type: ${typeof size}`);
*조금 특별한 값들
const infinity = 1 / 0; //무한대
const negativeInfinity = -1 / 0; //음의 무한대
const nAn = 'not a number' / 2; //숫자가 아닌 경우
console.log(infinity);
console.log(negativeInfinity);
console.log(nAn);
한 글자든 여러 글자든 모두 string. + 를 이용해 두 문자열을 연결할 수도 있음.
const char = 'c';
const user = 'yujin';
const greeting = 'hello ' + user;
console.log(`value: ${greeting}, type: ${typeof greeting}`);
const helloBob = `hi ${user}`; //template literrals
console.log(`value: ${helloBob}, type: ${typeof helloBob}`);
false: 0, null, undefined, NaN, ''
true: 위를 제외한 나머지
고유한 식별자를 만들 때 사용.
string은 동일한 문자열이라면 동일한 식별자로 간주되지만 symbol은 그렇지 않다.
//같은 문자열도 다르게 인식
const symbol1 = Symbol('id');
const symbol2 = Symbol('id');
console.log(symbol1==symbol2);
//동일한 symbol로 만들고 싶은 경우
const gsymbol1 = Symbol.for('id');
const gsymbol2 = Symbol.for('id');
console.log(gsymbol1==gsymbol2);