* ์ธ์ ์ ๋ฌ
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋๊ฒจ์ฃผ๋ ํจ์์ ์ธ์ ๊ฐฏ์๋ ์ ํ X
์ธ์์ ๊ฐฏ์๋ ์ ํด๋๊ณ ํจ์๋ฅผ ๋ง๋ค์ด๋ ์ค์ ํธ์ถ ์ ์ ํํ ๊ทธ ๊ฐฏ์๋ฅผ ๋ง์ถฐ ์ค ํ์ X
์๋ฌด๊ฒ๋ ์ ๋ฌํ์ง ์์๋ ๋จ -> undefined๋ก ๋์ด(์๋ฌ๋ฐ์ x)
function showName(name){
console.log(name);
}
showName('Mike'); //'Mike'
showName('Mike','Tom'); //'Mike'
showName(); //undefined
ํจ์์ ์ธ์๋ฅผ ์ป๋ ๋ฐฉ๋ฒ
1. arguments๋ก ์ ๊ทผ: ๊ณผ๊ฑฐ ์ฌ์ฉ ๋ฐฉ๋ฒ, ํ์ดํ ํจ์์์๋ ์ฌ์ฉ ๋ถ๊ฐ
2. ๋๋จธ์ง ๋งค๊ฐ ๋ณ์ ์ฌ์ฉ: ๋ค์ํ ๋ฐฉ๋ฒ ์์
1. arguments
- ํจ์๋ก ๋์ด ์จ ๋ชจ๋ ์ธ์์ ์ ๊ทผํ ์ ์์
- ํจ์ ๋ด์์ ์ด์ฉ ๊ฐ๋ฅํ ์ง์ญ ๋ณ์
- length์ index๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ด๋ผ๊ณ ์๊ฐํ ์ ์์ง๋ง ์ฌ์ค Array ํํ์ ๊ฐ์ฒด์ ํด๋น
- ๊ทธ๋ฌ๋ ๋ฐฐ์ด์ ๋ด์ฅ ๋ฉ์๋๋ ๊ฐ์ง๊ณ ์์ง ์์( forEach, map ์ฌ์ฉํ ์ x)
function showName(name){
console.log(arguments.length);
console.log(arguments[0]);
console.log(arguments[1]);
}
showName('Mike','Tom'); //2 //'Mike'//'Tom'
2. ๋๋จธ์ง ๋งค๊ฐ๋ณ์(Rest parameters)
- ๊ฐ๊ธ์ ๋๋จธ์ง ๋งค๊ฐ๋ณ์ ์ฌ์ฉ ๊ถ์ฅ
- ์ ํด์ง์ง ์์ ๊ฐฏ์์ ์ธ์๋ฅผ ๋ฐฐ์ด๋ก ๋์ดํ ์ ์์
- ... ๋ฅผ ์ฐ๊ณ ๋ฐฐ์ด ์ด๋ฆ์ ์ง์
- ...names ๋ฐฐ์ด ์์ ์ ๋ฌ๋ ์ธ์๋ค์ด ๋ค์ด๊ฐ
function showName(...names){
console.log(names);
}
showName();//[]
showName('Mike');//['Mike']
showName('Mike','Tom'); //(2) ['Mike','Tom']
์์1) ์ ๋ฌ ๋ฐ์ ๋ชจ๋ ์ ๋ํ๊ธฐ
function add(...numbers) {
let result = 0;
numbers.forEach((num) => (result += num))
console.log(result);
}
add(1,2,3); //6
add(1,2,3,4,5,6,7,8,9,10); //55
function add(...numbers) {
let result = numbers.reduce((prev, cur) => (prev += cur))
console.log(result);
}
add(1,2,3); //6
add(1,2,3,4,5,6,7,8,9,10); //55
์์2) user ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์ฃผ๋ ์์ฑ์ ํจ์ ๋ง๋ค๊ธฐ
- ์์ฑ์ ํจ์์ ์ฒซ๊ธ์๋ ๋๋ฌธ์๋ก ํ๊ธฐ
- ๋๋จธ์ง ๋งค๊ฐ ๋ณ์๋ ํญ์ ์ ์ผ ๋ค์ ๋ฐฐ์นํ๊ธฐ
function User(name, age, ...skills){
this.name = name;
this.age = age;
this.skills = skills;
}
const user1 = new User('Mike', 30, 'html','css')
const user2 = new User('Tom', 20, 'Js','React')
const user3 = new User('Jane', 10, 'English')
console.log(user1) //User {name: 'Mike', age: 30, skills: Array(2)}
console.log(user2) //User {name: 'Tom', age: 20, skills: Array(2)}
console.log(user3) //User {name: 'Jane', age: 10, skills: Array(1)}
* ์ ๊ฐ๊ตฌ๋ฌธ(Spread syntax)
- ๋ฐฐ์ด
let arr1 = [1,2,3];
let arr2 = [4,5,6];
let result = [0, ...arr1, ...arr2,7,8,9];
console.group(result) //(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- ๊ฐ์ฒด
let user = {name:'Mike'}
let mike = {...user, age:30}
console.log(mike) //{name: 'Mike', age: 30}
- ๋ณต์
let arr = [1,2,3];
let arr2 = [...arr]; //[1,2,3]
let user = {name:'Mike', age:30};
let user2 = {...user};
user2.name="Tom";
console.log(user.name); //Mike
console.log(user2.name); //Tom
์์1) arr1์ [4,5,6,1,2,3]์ผ๋ก
- reverse๋ฅผ ์ด์ฉํด arr2๋ฅผ ์ญ์์ผ๋ก ๋ง๋ค์ด ์ค
let arr1 = [1,2,3];
let arr2 = [4,5,6];
arr2.reverse().forEach((num) => {
arr1.unshift(num);
});
console.log(arr1)//(6) [4, 5, 6, 1, 2, 3]
์ด๋ฅผ ์ ๊ฐ๊ตฌ๋ฌธ์ผ๋ก ๋ ๊ฐ๋จํ๊ฒ ํํ ๊ฐ๋ฅ
let arr1 = [1,2,3];
let arr2 = [4,5,6];
arr1 = [...arr2, ...arr1];
console.log(arr1)//(6) [4, 5, 6, 1, 2, 3]
-> ๊ฐ์ฒด์ผ ๊ฒฝ์ฐ ์ค๋ธ์ ํธ ์ฌ์ฉ ์
let user = {name: "Mike"};
let info = {age: 30};
let fe = ["JS","React"];
let lang = ["Korean","English"];
user = Object.assign({},user,info,{
skills:[],
})
fe.forEach((item) => {
user.skills.push(item);
});
lang.forEach((item) => {
user.skills.push(item);
});
console.log(user);
//{name: 'Mike', age: 30, skills: Array(4)}
//age: 30
//name: "Mike"
//skills: (4) ['JS', 'React', 'Korean', 'English']
-> ๊ฐ์ฒด์ผ ๊ฒฝ์ฐ ์ ๊ฐ๊ตฌ๋ฌธ ์ฌ์ฉ ์
let user = {name: "Mike"};
let info = {age: 30};
let fe = ["JS","React"];
let lang = ["Korean","English"];
user = {
...user,
...info,
skills: [...fe, ...lang],
};
console.log(user);
//{name: 'Mike', age: 30, skills: Array(4)}
//age: 30
//name: "Mike"
//skills: (4) ['JS', 'React', 'Korean', 'English']
'js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
javascript setTimeout / setInterval (0) | 2022.10.31 |
---|---|
javascript ํด๋ก์ (Closure) (0) | 2022.10.28 |
javascript ๊ตฌ์กฐ ๋ถํด ํ ๋น(Destructuring assignment) (0) | 2022.10.04 |
javascript ๋ฐฐ์ด ๋ฉ์๋2(sort, reduce) (1) | 2022.10.04 |
javascript ๋ฐฐ์ด ๋ฉ์๋(Array methods) (0) | 2022.10.04 |