1. ๊ธฐ๋ณธ ํ์
1) ์ซ์ (Number) 2) ๋ฌธ์์ด (String) 3) ๋ถ๋ฆฐ๊ฐ (Boolean) 4) undefined 5) null 2. ์ฐธ์กฐ ํ์ 1) ๊ฐ์ฒด (1) ๋ฐฐ์ด (Array) (2) ํจ์ (Function) (3) ์ ๊ทํํ์ |
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋์จํ ํ์
์ฒดํฌ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ int, char ๋ฑ ๋ณ์์ ๋ฐ์ดํฐ ํ์
์ ์ง์ ํ๋ ์๊ฒฉํ ํ์
์ฒดํฌ ์ธ์ด์๋ ๋ค๋ฅด๋ค. var๋ผ๋ ํค์๋๋ก ๋ณ์๋ฅผ ์ ์ธํ๊ณ , ์ฌ๊ธฐ์ ์ด๋ค ํ์
์ ๋ฐ์ดํฐ๋ผ๋ ์ ์ฅํ ์ ์๋ค. ๋ณ์๋ฅผ ์ ์ธํ๊ณ ์๋ฌด ๊ฒ๋ ๋์
ํ์ง ์์ผ๋ฉด undefined ํ์
์ด๋ค.
1. ๊ธฐ๋ณธ ํ์
1) ์ซ์ (Number)
- ๋ชจ๋ ์ซ์๋ฅผ 64๋นํธ ๋ถ๋ ์์์ ํํ๋ก ์ ์ฅํ๊ณ , ์ด๋ C์ธ์ด์ double ํ์ ๊ณผ ์ ์ฌํ๋ค.
2) ๋ฌธ์์ด (String)
- ์์ ๋ฐ์ดํ ๋๋ ํฐ ๋ฐ์ดํ๋ก ์์ฑํ๋ค. ๋ฌธ์์ด์ ๋ฐฐ์ด์ฒ๋ผ ์ธ๋ฑ์ค๋ฅผ ํตํด ์ ๊ทผํ ์ ์๋ค. char ํ์ ๊ณผ ๊ฐ์ ๋ฌธ์ ํ์ ์ ์กด์ฌํ์ง ์๋๋ค. ํ ๋ฒ ์ ์๋ ๋ฌธ์์ด์ ๋ณํ์ง ์๋๋ค. ์ฆ, ์์ ์ด ๋ถ๊ฐ๋ฅํ๋ค.
var str = 'uno';
str[0] = 'U';
console.log(str); //uno ์ถ๋ ฅ
//์ธ๋ฑ์ค๋ฅผ ํตํด ์ ๊ทผํด ๊ฐ์ ๋ฐ๊พธ๋ คํด๋ ๋ฐ๋์ง ์๋๋ค.
3) ๋ถ๋ฆฐ๊ฐ (Boolean)
- true ๋๋ false
4) undefined
- '๊ฐ์ด ๋น์ด์์'์ ๋ํ๋ธ๋ค. undefined๋ ํ์ ์ด์ ๊ฐ์ด๋ค.
var emptyVar;
console.log(typeof emptyVar); //undefined ์ถ๋ ฅ
console.log(emptyVar); //undefined ์ถ๋ ฅ
//์ ์ธํ๊ณ ๊ฐ์ ๋์
ํ์ง ์์ผ๋ฉด ๊ฐ๊ณผ ํ์
๋ชจ๋ undefined์ด๋ค.
5) null
- '๊ฐ์ด ๋น์ด์์'์ ๋ํ๋ด์ง๋ง, ํ์ ์ Object์ด๊ณ ๊ฐ์ null์ด๋ค. (undefined์์ ์ฐจ์ด์ )
var nullVar = null;
console.log(typeof nullVar === null); //false ์ถ๋ ฅ. null๊ฐ์ ๋ด์ ๋ณ์์ ํ์
์ Object์ด๋ค.
console.log(nullVar === null); //true ์ถ๋ ฅ
2. ์ฐธ์กฐ ํ์
1) ๊ฐ์ฒด (Object)
- 'key : value' ํํ์ ํ๋กํผํฐ๋ฅผ ์ ์ฅํ๋ ์ปจํ ์ด๋์ด๋ค. ์์ ๋งํ ๊ธฐ๋ณธ ํ์ ์ ์ ์ธํ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ ๊ฐ์ ๊ฐ์ฒด์ด๋ค. ๊ฐ์ฒด๋ ์ฌ๋ฌ๊ฐ์ ํ๋กํผํฐ๋ฅผ ํฌํจํ ์ ์๋ค.
๊ฐ์ฒด์ ์ข ๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ด ๋๋ ์ ์๋ค.
(1) ๋ฐฐ์ด (Array)
(2) ํจ์ (Function)
(3) ์ ๊ทํํ์
์ด๋ฒ ํฌ์คํ ์์๋ ๊ฐ์ฒด, ์ฐธ์กฐ ํ์ ์ ์ฑ์ง์ ๊ฐ๋จํ ์์๋ณด๊ณ ์ดํ์ ๋ฐฐ์ด๊ณผ ํจ์ ๋ฑ์ ์์ธํ ๋ค๋ฃจ๋๋ก ํ๊ฒ ๋ค.
/*** ๊ฐ์ฒด ์์ฑ ๋ฐฉ๋ฒ ***/
//1. Object() ์์ฑ์ ํจ์ ์ด์ฉ
var nee = new Object(); //๋น ๊ฐ์ฒด ์์ฑ
nee.name = 'uno'; //๊ฐ์ฒด ํ๋กํผํฐ ์์ฑ (name : ํ๋กํผํฐ ์ด๋ฆ / uno : ํ๋กํผํฐ ๊ฐ)
nee.age = 100;
//2. ๊ฐ์ฒด ๋ฆฌํฐ๋ด ๋ฐฉ์ ์ด์ฉ
var nee = {
name: 'uno',
age: 100
};
//3. ์์ฑ์ ํจ์ ์ด์ฉ
/*** ๊ฐ์ฒด์ ์ถ๋ ฅ ***/
console.log(typeof nee); //object
console.log(nee); { name: 'uno', age:100 }
* ๊ฐ์ฒด ํ๋กํผํฐ ์ฝ๋ ๋ฒ
- ๋๊ดํธ([]) ํ๊ธฐ๋ฒ => nee['name']
์ ๊ทผํ๋ ค๋ ํ๋กํผํฐ ์ด๋ฆ์ด ํํ์์ด๊ฑฐ๋ ์์ฝ์ด์ผ ๊ฒฝ์ฐ์๋ ์ด ๋ฐฉ๋ฒ๋ง์ ์ฌ์ฉํด์ผ ํ๋ค.
ex) nee๋ผ๋ ๊ฐ์ฒด์ full-name ํ๋กํผํฐ๊ฐ ์์ ๊ฒฝ์ฐ nee.full-name์ ๋ถ๊ฐ๋ฅ, nee['full-name']์ผ๋ก ์ฌ์ฉํด์ผ ํ๋ค.
- ๋ง์นจํ(.) ํ๊ธฐ๋ฒ => nee.name
โป ํ๋กํผํฐ ์ด๋ฆ์ด ์ซ์์ผ ๊ฒฝ์ฐ, ๋๊ดํธ ์์ ์ซ์๋ง ์ ์ด๋ ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด [] ์ฐ์ฐ์ ๋ด์ ์ซ์๋ฅผ ์๋์ผ๋ก ๋ฌธ์์ด ํํ๋ก ๋ฐ๊ฟ์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ฅผ ๋ค์ด, var n = { 10: 'hello' } ์ผ ๋
n['10'] ๋๋ n[10] ๋ ๋ค ๊ฐ๋ฅํ๋ค.
* ๊ฐ์ฒด ํ๋กํผํฐ ๊ฐ์ ํ ๋น/๊ฐฑ์ ํ๋ ๋ฒ
nee.major = 'engineering';
[nee๋ผ๋ ๊ฐ์ฒด์ major๋ผ๋ ํ๋กํผํฐ๊ฐ ์๋ ๊ฒฝ์ฐ] => engineering์ด๋ผ๋ ๊ฐ์ผ๋ก major ํ๋กํผํฐ๊ฐ ๋์ ์์ฑ๋๋ค.
[ major๋ผ๋ ํ๋กํผํฐ๊ฐ ์ด๋ฏธ ์๋ ๊ฒฝ์ฐ] => major ํ๋กํผํฐ์ ๊ฐ์ด engineering์ผ๋ก ๊ฐฑ์ ๋๋ค.
--> ์ฆ, ๊ฐ์ฒด์ ๊ฐ์ ํ ๋นํ ๋, ํ๋กํผํฐ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ํด๋น ํ๋กํผํฐ์ ๊ฐ์ ๊ฐฑ์ ํ๊ณ , ์๋ ๊ฒฝ์ฐ์๋ ์๋ก์ด ํ๋กํผํฐ๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๋ฉด์ ๊ฐ์ ํ ๋นํ๋ค.
* for in ๋ฌธ์ผ๋ก ๊ฐ์ฒด ํ๋กํผํฐ ์ถ๋ ฅํ๊ธฐ (์๋ฐ์ for each๋ฌธ๊ณผ ๋น์ท)
var nee = {
name: 'uno',
age: 100
};
var prop;
for(prop in nee){
console.log(prop, nee[prop];
}
//[์ถ๋ ฅ๊ฐ]
//name uno
//age 100
* ๊ฐ์ฒด ํ๋กํผํฐ ์ญ์
delete ์ฐ์ฐ์๋ก ๊ฐ์ฒด์ ํ๋กํผํฐ๋ฅผ ์ญ์ ํ ์ ์์ผ๋, ๊ฐ์ฒด๋ฅผ ์ญ์ ํ ์๋ ์๋ค.
delete nee.name; //name ํ๋กํผํฐ ์ญ์
delete nee; //์๋ฌ๋ ๋์ง ์์ผ๋ ๊ฐ์ฒด๋ ์ญ์ ๋์ง ์์
* ์ฐธ์กฐ ํ์
์ ํน์ฑ
์๋ฐ์คํฌ๋ฆฝํธ์ ์๋ฃํ ์ค์์ ๊ฐ์ฒด๋ ์ฐธ์กฐ ํ์
์ด๋ฉฐ, ๊ฐ์ฒด์ ๋ชจ๋ ์ฐ์ฐ์ ์ค์ ๊ฐ์ด ์๋ ์ฐธ์กฐ๊ฐ์ผ๋ก ์ฒ๋ฆฌ๋๋ค.
//objA ๊ฐ์ฒด ์์ฑ
var objA = {
val: 40
};
//objB ๊ฐ์ฒด์ objA์ ๊ฐ์ ๋์
ํ๋ฉฐ ์์ฑ
var objB = objA;
console.log(objA); //{ val: 40 } ์ถ๋ ฅ
console.log(objB); //{ val: 40 } ์ถ๋ ฅ
objA.val = 50; //objA์ val ๊ฐ์ 50์ผ๋ก ๊ฐฑ์
console.log(objA); //{ val: 50 } ์ถ๋ ฅ
console.log(objB); //{ val: 50 } ์ถ๋ ฅ
๊ฐ์ฒด๋ ์ฐธ์กฐ ํ์ ์ด๊ธฐ ๋๋ฌธ์ objB์ val ๊ฐ ์ญ์ 50์ผ๋ก ๋ณ๊ฒฝ๋๋ค. objA ๋ณ์๋ ๊ฐ์ฒด ์์ฒด๋ฅผ ์ ์ฅํ๊ณ ์๋ ๊ฒ์ด ์๋๋ผ, ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ๊ฐ(์ฃผ์๊ฐ)์ ์ ์ฅํ๊ณ ์๋ค. => objA์ objB๋ ๋์ผํ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ค.
- ๊ฐ์ฒด์ ๋น๊ต
var objA = {
val: 40
};
var objB = {
val: 40
};
var objC = objA;
console.log(objA == objB); //false
console.log(objA == objC); //true
objA์ objB๋ ๋ค๋ฅธ ๊ฐ์ฒด์ด์ง๋ง ๊ฐ์ ํํ์ ํ๋กํผํฐ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ค. ํ์ง๋ง ๊ฐ์ฒด๋ ์ฐธ์กฐ ํ์ ์ด๊ณ ๋์ ์ฐธ์กฐ๊ฐ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ false๊ฐ ์ถ๋ ฅ๋๋ค. objC๋ objA์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ฏ๋ก true๊ฐ ์ถ๋ ฅ๋๋ค.
- ์ฐธ์กฐ์ ์ํ ํจ์ ํธ์ถ ๋ฐฉ์
์ธ์๋ก ๊ธฐ๋ณธ ํ์ ์ ๋๊ธด ๊ฒฝ์ฐ => ๊ฐ์ ์ํ ํธ์ถ ๋ฐฉ์(Call By Value)
ํธ์ถ๋ ํจ์์ ๋งค๊ฐ๋ณ์๋ก ๋ณต์ฌ๋ ๊ฐ์ด ์ ๋ฌ๋๊ณ , ํจ์ ๋ด๋ถ์์ ๋งค๊ฐ๋ณ์ ๊ฐ์ ๋ณ๊ฒฝํด๋ ์ค์ ๋ณ์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์๋๋ค.
์ธ์๋ก ์ฐธ์กฐ ํ์ ์ ๋๊ธด ๊ฒฝ์ฐ => ์ฐธ์กฐ์ ์ํ ํธ์ถ ๋ฐฉ์(Call By Reference)
ํธ์ถ๋ ํจ์์ ๋งค๊ฐ๋ณ์๋ก ๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ์ด ๊ทธ๋๋ก ์ ๋ฌ๋๊ณ , ๋งค๊ฐ๋ณ์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
var a = 100;
var objA = {
val:100
};
function change(num, obj){
num = 200;
obj.val = 200;
console.log(num); // 200
console.log(obj); // { val : 200 }
};
change(a, objA); //a : ๊ธฐ๋ณธ ํ์
, objA : ์ฐธ์กฐ ํ์
console.log(a); // 100
console.log(objA); // { val : 200 }
์ฐธ์กฐ ํ์ ์ธ objA์ ๊ฒฝ์ฐ ํจ์ ๋ด์์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ฏ๋ก, ํจ์๊ฐ ๋๋ ํ objA์ ๊ฐ์ { val : 200 } ๊ฐ ์ถ๋ ฅ๋๋ค.
'๐ปStudy > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ธฐ๋ณธ ํ์ ๊ณผ ํ์ค ๋ฉ์๋ / ์ฐ์ฐ์ (0) | 2021.03.09 |
---|---|
๋ฐฐ์ด (0) | 2021.03.05 |
ํ๋กํ ํ์ (0) | 2021.03.05 |
์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์์ ํต์ฌ ๊ฐ๋ (0) | 2021.02.09 |