따옴표로 묶여 있어야 함!
'Hun' // 권장!
"Hun"
`Hun` // 보간을 할 때만 사용! ${}
// console.log(승훈); // ()안은 변수이다. reference error
const abc = 'ABC' // abc : 메모리 주소, ABC를 담고 있는 그릇
console.log(`Hello ${abc}`); // 보간
Not-A-Number - 숫자 데이터 / 숫자로 표시가 불가!
NaN
1
1234123
0.12313546156
//부동 소수점 오류
let a = 0.1;
let b = 0.2;
console.log(
parseFloat((a + b).toFixed(1)) // 소수점 자리 1개로
);
a = 1;
b = undefined;
console.log(a*b); // NaN
true
false
내가 직접 지정하는 명시적으로 사용하는 빈 값.
'존재하지 않는', '비어 있는', '알 수 없는' 값을 명시적으로 나타냄
값이 할당되지 않는 변수는 undefined가 된다.
암시적
'값이 할당되지 않은 상태'를 암시적으로 나타냄
유일한 식별자(ID) 데이터 이름을 만들 때 사용
const s = Symbol('Hello world'); // 설명
const user = {
name: 'Hun',
[s]: 82
}
console.log(user.name);
console.log(user[s]);
큰(Big) 정수(Integer)
2^53 - 1
const a = [1, '2', 3, {}, () => {}] // 각각배열의 아이템, 배열의 요소
// index 번호 0,1,2,3,4 ... => zero-based numbering
// indexing(배열 조회)
console.log(a[3]); // {}
리터럴 방식 : 기호를 통해서 (배열, 객체, 문자) 만드는 것
// Key : Value
const obj = {
a: 'Apple',
// 'aasfagnkq!@#!@EDSAFe': 'Apple',
b: 'Banana',
c: 'Cherry'
// _c: 'Cherry' // 의미를 가지면 _를 사용해준다
}
// Apple찾기
console.log(obj.a); // 점(Dot) 표기법
console.log(obj['a']); // 괄호(Bracket) 표기법
// console.log(obj['aasfagnkq!@#!@EDSAFe']);
// console.log(obj._c);
function 키워드로 시작한다.
★함수도 하나의 데이터이다.
function hun() {
// 명령1
// 명령2
// 명령3
// 명령4
}
hun();
// 아래 두개는 같다
c() {
},
c: function () {
},
let a = 123;
let b = 123;
console.log(a == b); // true
b = '123';
console.log(a == b); // true => ??, 자동으로 형 변환이 일어나 비교를 했다.
// == : 동등연산자, 위와 같은 현상이 일어나기 때문에 문제가 생기므로 쓰지 말자!
a = {};
b = {};
console.log(a === b); // false, 주소가 달라서!
// Falsy 종류!!
if(false)
if(null)
if(undefined)
if(0)
if(-0)
if(NaN)
if(0n)
if('')
// if(' ') // 공백문자 -> falsy가 아님! truthy임!
typeof 데이터
데이터.constructor
Object.prototype.toString.call(데이터)
null과 Array는 typeof로 알아낼 수 없다.
그러므로 아래와 같은 방법을 사용해서 알아낼 수 밖에 없다.
// Array
console.log([].constructor === Array); // true
console.log(Array.isArray([])); // true
function checkType(data) {
return Object.prototype.toString.call(data)
// return Object.prototype.toString.call(data).slice(8, -1)
// 위와 같이 slice를 사용하면 [object 와 ]를 자르고 나머지만 나오게 한다.
}
console.log(checkType([])) // [object Array]
console.log(checkType(null)) // [object Null]
const(상수)
: 무조건 먼저 사용할 것, const로 쓰고 시작해라!let
: 재할당이 필요할 때 let을 사용할 것, const를 let으로 바꿔라!var
: 사용하지 말 것유효범위: 함수 레벨
재할당 : O
중복 선언: O
호이스팅(Hositing) : O
전역 등록 : O
유효범위(scope)
재할당
중복선언
호이스팅(Hoisting)
전역(Global) 선언 시 전역 객체(window
)의 속성으로 등록
호이스팅(Hositing) : 선언부를 유효범위 최상위로 끌어올리는 현상
선언은 밑에, 사용은 위에서 하는 것
// 변수별 유효 범위
function abc() {
console.log(a); // 호이스팅
if (true) {
var a = 123;
let b = 123;
const c = 123;
console.log('in : ', a);
console.log('in : ', b);
console.log('in : ', c);
}
console.log('out : ', a);
}
abc()
// 중복 선언:X
const a = 123;
console.log(a);
a = 456;
let b = 123;
console.log(b);
let b = 456;
// 중복선언 : O
var c = 123;
console.log(c);
var c = 456;