whatisthis?
javaScript. (3) ํจ์(Function) ๋ณธ๋ฌธ
1. ํจ์(Function)
๐ ํจ์์ ์์ฑ
๋ฐฉ๋ฒ 1 / ํจ์ ์ ์ธ (Declaration)
function addOne(x) {
var y = x + 1;
return y;
}
๋ฐฉ๋ฒ 2 / ํจ์ ํํ์ (Expression)
let addOne = function(x){ // ๋ณ์ ์ ์ธ ํ ํจ์ ๋์
var y = x + 1;
return y;
};
์ฌ๊ธฐ์ addOne์ ํจ์์ ์ด๋ฆ(=๋ณ์์ ์ด๋ฆ)์ด๊ณ ,
x๋ ์ฌ์ฉ์๊ฐ ๋ฃ๊ณ ์ถ์ ๊ฐ์ ๋ฃ๋ ๊ณณ์ด๋ค.
๋ฐ๋ผ์, x๋ฅผ ๋งค๊ฐ๋ณ์(parameter)๋ผ๊ณ ํ๋ค.
return์ ํด๋น ๊ฐ์ ํจ์ ๋ฐ๊นฅ์ผ๋ก ๋ด๋ณด๋ด๊ณ , ํจ์๋ฅผ ์ข ๋ฃํ๋ผ๋ ์๋ฏธ์ด๋ค. (= ๋ฐํ)
โโ ์ฃผ์ - return์ ์์น
์ ๋ ๋ฐฉ์์ ์ฐจ์ด ์ค ํ๋๋ ํธ์ด์คํ (hoisting)์ด๋ผ๋ ํ์์ธ๋ฐ,
ํด๋น ๋ด์ฉ์ ์๋ ํฌ์คํ ์ ์ ๋ฆฌํด๋์๋ค.
๋ ๋ค๋ฅธ ์ฐจ์ด๋ ์ค๊ดํธ(๋ธ๋ก) ๋์ ์ธ๋ฏธ์ฝ๋ก (;)์ด ๋ถ๋๋ค๋ ์ ์ด๋ค.
ํจ์ ์ ์ธ์ผ๋ก ํจ์๋ฅผ ๋ง๋ค ๋์๋ ๋์ ์ธ๋ฏธ์ฝ๋ก ์ ๋ถ์ด์ง ์๋๋ค.
๐ ํจ์์ ์คํ
์์ ๊ฐ์ด ์์ฑํ ํจ์๋ฅผ ์คํํ๊ธฐ ์ํด์๋
ํจ์์ ์ด๋ฆ์๋ค ์๊ดํธ()๋ฅผ ๋ถ์ด๊ณ ,
๊ดํธ ์์๋ ๋งค๊ฐ๋ณ์์ ์์ํ๋ ์ธ์(argument)๋ฅผ ๋ฃ์ด์ค๋ค.
>> ํจ์์ ํธ์ถ
๋ณ์์ ์ ์ฅํด์ return๊ฐ์ ๋ฐ์ ์๋ ์๊ณ ,
๊ทธ๋ฅ ๋จ์ํ ํธ์ถ๋ง ํ ์๋ ์๋ค.
(๋ณดํต์ ๋ณ์์ ์ ์ฅํ์ฌ ์ฌ์ฉ)
์ฐ๋ฆฌ๊ฐ ์๊ดํธ ์์ ์ธ์(argument)๋ก 1์ ๋ฃ์์ผ๋ฏ๋ก
3์ด ๋งค๊ฐ๋ณ์(parameter) x๋ก ์ ๋ฌ๋๊ณ , addOne ํจ์ ๋ด๋ถ์ ์ฝ๋๊ฐ ์คํ๋๋ค.
function(parameter) { } | ํจ์ ์ ์ธ์ ๊ดํธ ์์ ๊ฐ |
function(argument) | ํจ์ ํธ์ถ์ ๊ดํธ ์์ ๊ฐ |
๋ง์ฝ, ๋งค๊ฐ๋ณ์๊ฐ ๋๊ฐ๊ฐ ์๋ค๋ฉด ํธ์ถ ์ ์ธ์๋ฅผ ๋๊ฐ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
์>
const addNumbers = function(x, y) {
return x + y;
}
addNumbers(12, 5); // 17
___
but. ๋งค๊ฐ๋ณ์๊ฐ ๋ง์์ง๋ฉด ์ฌ์ฉ์ ํท๊ฐ๋ฆด ์ ์๋ค.
>> ๋งค๊ฐ๋ณ์๊ฐ ๋ง์์ง ๊ฒ ๊ฐ์ผ๋ฉด ๊ฐ์ฒด๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
const addAll = function(object) {
return object.a + object.b + object.c + object.d;
};
addAll({a: 1, b: 3, c: 4, d: 6}); // 14
์ด๋ ๊ฒ ๊ฐ์ฒด๋ฅผ ์ด์ฉํ๋ฉด,
๋งค๊ฐ๋ณ์๋ ํ๋์ด๊ณ , ์ธ์(argument)๋ ํ๋๋ก ๊น๋ํ๊ฒ ๋๋ค.
addAllํจ์์ ์ธ์๋ก ๋ฃ์ ๊ฐ์ฒด( { } ์์ ๊ฐ๋ค )๊ฐ object๋ผ๋ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋์ด
ํจ์์ ์ฝ๋๋๋ก ์คํ๋๋ ๊ฒ์ด๋ค.
+) ์ถ๊ฐ๋ก, ํจ์์ ์ธ์๋ก ํจ์๋ฅผ ํธ์ถํด๋ ๋๋ค.
const addOne = function(x) {
return(x + 1);
}
const multiply = function(x, y) {
return(x * y);
}
const addMultiply = multiply(addOne(2), addOne(4)); // 15
___
โ return์ ํ์ง ์๋ ํจ์
- return์ด ์๋ ํจ์๋ ์๋์ผ๋ก undefined๋ฅผ ๋ฐํํ๋ค.
- console.log๋ alert ๋ฑ์ด ์ถ๋ ฅ๋๋๊ฒ์ return์ ์ํ ๊ฒ์ด ์๋๋ฏ๋ก ๊ด๋ จ X.
>> return ๊ฐ์ ์ ๋ ฅํ์ง ์์ผ๋ฉด ์๋์ผ๋ก return undefined; ๊ฐ ๋ง์ง๋ง ์ฝ๋๋ก ๋์!
___
โโ return์ ์์น
- return ์ดํ์๋ ํจ์๊ฐ ์ข ๋ฃ๋๊ธฐ ๋๋ฌธ์ ์คํ๋์ง ์์.
> return ๋ค์ ์ฝ๋๋ฅผ ์ ๋ ์ค์๋ฅผ ํ์ง ๋ง์.
2. ๋ฉ์๋ (method) + ๊ทธ ์ธ
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ๊ฐ(value)์ผ๋ก ํจ์๊ฐ ๋ค์ด๊ฐ ์ ์๋ค.
>> ํจ์๋ ํ๋์ ๊ฐ์ด๊ธฐ ๋๋ฌธ.
const user = {
name : 'yjin',
age : 23,
sayHello : function() {
console.log('Hello ' + this.name); // ์ฌ๊ธฐ์ this๋ ๊ฐ์ฒด ์์ ์ ์๋ฏธ.
}
}
๊ฐ์ฒด์์ ์์ฑ(property)์ ๊ฐ์ผ๋ก ์ฌ์ฉ๋๋ ํจ์๋ฅผ ๋ฉ์๋(Method) ๋ผ๊ณ ํ๋ค.
>> ์ถํ์ this์ ๋ํด ์์ธํ ํฌ์คํ ํ๋๋ก ํ๊ฒ ๋ค.
** ํจ์ ์ฌํ ver.
const mother = function(func) {
func();
};
const children = function() {
alert('์๋
ํ์ธ์');
};
mother(children); // '์๋
ํ์ธ์'
์ ์์ ์์, mother์ด๋ผ๋ ํจ์๋
๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ ๊ทธ ํจ์๋ฅผ ์คํํ๋๋ก ๋์ด์๋ค.
๊ทธ๋ฆฌ๊ณ , childeren์ด๋ผ๋ ํจ์๋ '์๋ ํ์ธ์'๋ฅผ ์ถ๋ ฅํ๋ค.
mother์ ์ธ์(argument)๋ก children์ด ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์
๋งค๊ฐ๋ณ์ func์ childern์ด๋ผ๋ ๊ฐ์ด ์ ๋ฌ๋๋ค.
๋ฐ๋ผ์, mother ํจ์์ ์ฝ๋๋ฅผ ์คํํ์ฌ
children()์ด ์คํ -> children ํจ์๊ฐ ํธ์ถ๋จ.
>> ํจ์๊ฐ ์ธ์๊ฐ(argument)๊ณผ ๋งค๊ฐ๋ณ์(parameter)๋ก ํ์ฉ๋ ์ ์๋ค!
์์ ๊ฐ์ด ๊ฐ(value)์ผ๋ก ์ฌ์ฉํ๋ ํจ์๋ฅผ 1๊ธ ํจ์๋ผ๊ณ ๋ถ๋ฅธ๋ค.
REFERENCE
https://www.zerocho.com/category/JavaScript/post/572dcbbd2115c895b0f248fd
์ด ํฌ์คํ ์ zerocho๋์ javascript ๊ฐ์์ ์ฑ ์ ๋ณด๊ณ ์์ฑํ ๊ธ์ ๋๋ค.
๊ณต๋ถ+๊ธฐ๋ก ์ฉ์ผ๋ก ์์ฑํ ๊ฒ์ด๋ฉฐ, ์์ธํ ๊ฒ์ ์ ํฌ์คํ ์ ์ฐธ๊ณ ํ์ธ์!
'WEB STUDY > JAVASCRIPT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
javaScript. (5) ์กฐ๊ฑด๋ฌธ(condition) (0) | 2022.01.17 |
---|---|
javaScript. (4) ์ฐ์ฐ์(operator) (0) | 2022.01.17 |
javaScript. (2) ๊ฐ์ฒด(Object)์ ๋ฐฐ์ด(Array) (0) | 2022.01.17 |
javaScript. (1) ๋ณ์์ ์๋ฃํ (0) | 2022.01.17 |
javaScript. ํด๋์ค(Class) (0) | 2022.01.14 |