# INDEX
1. Values & Data type
1-1. Primitive type
1-2. Reference type
1-3. Primitive vs Reference
2. Operators
3. Control flow
4. Scope & Hoisting
5. Object & Array
6. This
7. Prototype & Inheritance
8. Function
9. Callback function
10. Closuer
11. Class
12. Others
typeof @
or typeof (@)
의 형태//ex
typeof 3; // "number"
typeof "willy" // "string"
typeof function foo() {}; // "function"
typeof {a:"apple"}; // "object"
typeof ["banana"]; // "object"
: 한 번 데이터 할당이 이뤄진 변수 공간에 다른 데이터를 재할당 할 수 없음
""
,''
, 백틱(``)
사용 가능index
를 이용해 문자열 접근 가능 .length
속성이 있음//ex
let name1 = "jung";
let name2 = "eun";
"Her name is ${name1+name2+2}" // "Her name is ${name1+name2+2}"
`Her name is ${name1+name2+2}` // "Her name is jungeun2"
name1+name2; // "jungeun"
name1[2]; // "n"
name2.length; // 3
Infinity
, -Infinity
, NaN
(Not A Number)도 숫자에 포함됨//ex
1/0; // infinity
infinity // infinity
Number("숫자가 아닌가?") // NaN
true
, false
값으로 출력되며, 긍정 또는 부정을 나타내는 값을 저장시 사용0;
-0;
false;
undefined;
null;
"";
'';
``;
NaN;
: 데이터 영역에 저장된 값은 모두 불변값 / 그러나 변수 공간에는 다른 데이터를 얼마든지 재할당 할 수 있음
=> name tag와 luggage를 이용한 그림을 통해 이해해보기!
ex1)
var a = 10;
var b = a;
a = 30;
console.log(b); // 무엇이 출력될까요? // 10
=> 원시값은 '값 그대로' 저장, 할당, 복사됨
ex2)
var a = [1, 2, 3];
var b = [1, 2, 3];
var result = a === b;
console.log(result); // 무엇이 출력될까요? // false
=> 객체는 '참조에 의해' 저장, 복사됨
=> 변수에 객체가 그대로 저장되는 것이 아니라, 객체가 저장되어있는 '메모리 주소'인 객체에 대한 '참조값'이 저장됨
ex3)
var james = {age: 35};
var john = james;
james.age = 60;
console.log(john); // 무엇이 출력될까요? // {age: 60}
ex4)
var person = {age: 30};
var something = person.age;
person.age = 50;
console.log(something); // 무엇이 출력될까요? // 30
ex5)
var one = {name: "one"};
var two = {name: "two"};
var something = one;
one = {name: "ONE"};
console.log(something); // 무엇이 출력될까요? // {name: "one"}