var로 변수 선언시 따로 타입을 명시 해주지 않아도됨. 이는 런타임시 변수값에 의해 동적으로 타입이 결정됨.
이를 동적바인딩(Dynamic Binding)이라고함.
== : 값만 일치하는지 검사
=== : Type 까지 일치하는지 검사
NULL = 비어있거나 존재하지 않는 값. ( 비었다고 고의로 명시해줌.)
Undefined = 변수를 정의해뒀지만 아예 손대지 않아서 아무 값도 할당받지 않는 상태.
var value1 = null;
console.log(value1);
//result : null
var value2
console.log(value2);
//result : undefined
` = 템플릿 문자열
템플릿 문자열을 이용하면 ${표현식}을 이용한 삽입처리 가능.
삽입처리란? : 표현식의 계산된 결과가 문자열로 변경되어 해당위치에 삽입되는 것.
템플릿 문자열의 특징 : MultiLine이 가능해서 코드 작성시 개행하면 그대로 개행되서 출력됨.
var a = [
{ kor: "한국", eng: "korea" },
{ kor: "중국", eng: "china" },
];
var space = `
${a[0].kor}${a[0].eng}
${a[1].kor}${a[1].eng}
${a.length}
`;
console.log(space);
//result :
한국korea
중국china
2
객체(Object): 값들을 그룹으로 묶은 데이터모음
{Key : Value}를 한쌍으로 정의하며 이를 속성(Properties)라고 부름.
하나의 키에는 하나의 값이 매핑.
중복된 키 이름 사용불가.
var x = {
name : "kim",
age : 15
}
console.log(x);
//result:{ name: 'kim', age: 15 }
객체와 다른점은 Key값이 무조건 " "로 감싸져있어야한다.
객체에서의 사용 {Key : value}
Json에서의 사용 {"Key":value}
[
{
"name": "kim",
"Age":14
},
{
"name": "yun",
"Age":17
}
];
함수 arguments 객체
function sum() {
var total = 0;
for (var i = 0; i < arguments.length; i++) total += arguments[i];
return total;
}
console.log(sum(1, 2, 3, 4));
//result : 10
위 코드처럼 함수에서 파라미터를 입력받지 않아도 argument에 모든 파라미터가 담긴다.
JavaScript는 전달 인자의 개수와 매개변수의 개수가 달라도 에러를 발생시키지 않는다.
함수 Rest Parameter
ES6에서 새로 추가된 문법.
function sum(a,b,...args) {
var total = 0;
for (var i = 0; i < args.length; i++) total += args[i];
return total;
}
console.log(sum(1,2))
console.log(sum(1,2,3))
console.log(sum(1, 2, 3, 4));
//result : 0
// 3
// 7
이 처럼 ...연산자를 사용해 RestParameter를 사용하면 정의되지 않은 나머지 3,4는 args에 배열 형태로 담긴다.
호이스팅
간단정리: 호이스트란 건설현장에서 화물 운반에 사용되는 장비이고 이 장비는 화물 등을 들어올리는 업무를 수행.
즉, 아래에 위치한 것을 위로 끌어올리는 역할을 하는 장비.
JavaScript에서 호이스팅은 코드에 선언된 변수 및 함수를 코드 상단으로 끌어 올리는 것.
이는 변수 범위가 Global이나 Local이냐에 따라 다르게 수행됨
(함수에서는 함수의 최상단으로, 전역에서는 스크립트단위의 최상단으로.)
단, 선언과 할당 모두 상단으로 끌어 올리는 게 아니라 선언부분만 분리하여 최상위로 끌어올림.
선언된 변수에 값을 할당하는 내용은 원래 그 라인에 있음.
함수 호이스팅은 선언 방식이 함수 선언식인 경우에만 적용된다.