숫자 타입 (number)
var integer = 10;
var double = 5.5;
var negative = -10;
Infinity : 양의 무한대Infinity : 음의 무한대NaN : 산술 연산 불가문자열 타입 (string)
var string;
string = 'JavaScript';
string = "JavaScript";
string = `JavaScript`;
내장된 표현식을 허용하는 문자열 작성 방식이다.
backtick(````)을 이용하며 JavaScript의 변수를 문자열 안에 바로 넣어 사용할 수 있다.
표현식은 $과 중괄호{}로 표기한다.
const age = 100;
const message = `고양이는 ${age}살입니다`;
console.log(message)
논리 타입 (boolean)
var flag = true;
console.log(flag);
flag = false;
console.log(flag);
true와 false 뿐이다.undefined와 null
undefinedundefined 타입의 값은 undefined가 유일하다.var 키워드로 선언한 변수는 undefined로 초기화 되므로 변수를 선언한 후 값을 할당하지 않은 변수를 참조 하면 undefined가 반환 된다.nullnull 타입의 값은 null이 유일하다.
변수에 값이 없다는 것을 의도적으로 명시할 때 사용한다.
이전에 할당 되어 있던 값에 대한 참조를 제거하지 않는 것을 의미한다.
var nullVal = 'something';
nullVal = null;
console.log(nullVal);
Symbol 타입과 객체 타입
변경 불가능한 원시 타입의 값이며 어떤 것에도 영향을 주지 않는 이름표 역할을 한다.
ES6에서 도입된 데이터 타입이다.
중복되지 않는 유일무이한 값이므로 이름 충돌할 일이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용한다.
Symbol()을 사용해 심볼 값을 만든다.
let student = {name : "홍길동"};
let id = Symbol("id");
student[id] = 1;
console.log(Object.keys(student)); // ['name']
console.log(Object.getOwnPropertyNames(student)); // ['name']
console.log(student[id]); // 1
Symbol 타입 키를 사용하면 프로퍼티가 중복으로 사용되거나 덮어 씌워 지는 걸 예방할 수 있다.
number, string, boolean, undefined, null, Symbol 6가지 타입을 제외하면 모두 객체 타입이다.
var obj = {};
var func = function () {};
var arr = [];
문자열 연결 연산자(+)는 문자열 타입이 아닌 피연산자를 문자열 타입으로 암묵적 변환한다.
console.log(10 + '20');
산술 연산자의 피연산자는 모두 숫자여야 하므로 숫자가 아닌 피연산자를 숫자 타입으로 암묵적 타입 변환한다.
비교 연산자로 크기를 비교하기 위해 모두 숫자 타입이어야 하므로 숫자가 아닌 피연산자를 숫자 타입으로 암묵적 타입 변환한다.
+ 단항 연산자는 피연산자가 숫자 타입.의 값이 아니면 숫자 타입의 값으로 암묵적 타입 변환한다.
console.log(10 - '5');
console.log(10 > '5');
console.log(+'');
true로, Falsy는 false로 암묵적 타입 변환 된다.String 생성자 함수를 new 연산자 없이 호출한다.
toString() 메서드를 사용한다.
문자열 연결 연산자를 이용한다.
console.log(String(10));
console.log((10).toString());
console.log(10 + '20');
Number 생성자 함수를 new 연산자 없이 호출한다.
parseInt, parseFloat 함수를 이용한다.
+ 단항 산술 연산자를 이용한다.
산술 연산자를 이용한다.
console.log(Number('10'));
console.log(parseInt('10'));
console.log(parseFloat('10.01'));
console.log(+'');
console.log('10' * 1);
Boolean 생성자 함수를 new 연산자 없이 호출한다.
! 부정 논리 연산자를 두 번 사용한다.
console.log(Boolean('JavaScript'));
console.log(!!'JavaScript');
전역 스코프 (Global Scope)
지역(블록) 스코프 (Local Scope)
전역 변수 (Global variable)
지역 변수 (Local variable)
var
let
const
어떤 변수를 사용해야 할까?
const를 기본으로 사용한다.let으로 전환한다.let을 사용한다는 것은 해당 변수가 의도적으로 변경될 수 있음을 명확하게 나타낸다.const의 장점을 활용할 수 있다.왜 const를 기본으로 사용해야 할까?