๐คํจ์ - ์ธํ๊ฐ์ ์ด๋ ํ ์กฐ์์ ๊ฐํด ์์ํ ๊ฐ์ ๋ฝ๋ ๊ฒ
|ํจ์ in JavaScript
- ์ฐธ์กฐ ํ์ ์ค ํ๋๋ก์จ function ํ์ ์ ์ํจ
- JavaScript์์ ํจ์๋ฅผ ์ ์ํ๋ ๋ฐฉ๋ฒ์ ์ฃผ๋ก 2๊ฐ์ง๋ก ๊ตฌ๋ถ
- ํจ์ ์ ์ธ์ (function declaration)
- ํจ์ ํํ์ (function expression)
|ํจ์ ์ ์ธ์
- ํจ์์ ์ด๋ฆ๊ณผ ํจ๊ป ์ ์ํ๋ ๋ฐฉ์
- 3๊ฐ์ง ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ
- ํจ์์ ์ด๋ฆ(name)
- ๋งค๊ฐ๋ณ์ (args)
- ๋ชธํต(์ค๊ดํธ ๋ด๋ถ)
function name(args) {
//do something
}
function add(num1,num2){
return num1+num2
}
add(1,2)
|ํจ์ ํํ์
const name = function (args){
//do something
}
const add = function (num1,num2){
return num1+num2
}
add(1,2)
- ํจ์๋ฅผ ํํ์* ๋ด์์ ์ ์ํ๋ ๋ฐฉ์
- (์ฐธ๊ณ ) ํํ์*: ์ด๋ค ํ๋์ ๊ฐ์ผ๋ก ๊ฒฐ์ ๋๋ ์ฝ๋์ ๋จ์
- ํจ์์ ์ด๋ฆ์ ์๋ตํ๊ณ ์ต๋ช
ํจ์*๋ก ์ ์ ๊ฐ๋ฅ
- ์ต๋ช ํจ์*(anonymous function): ์ด๋ฆ์ด ์๋ ํจ์
- ์ต๋ช ํจ์๋ ํจ์ ํํ์์์๋ง ๊ฐ๋ฅ
- 3๊ฐ์ง ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ
- ํจ์์ ์ด๋ฆ(์๋ต ๊ฐ๋ฅ)
- ๋งค๊ฐ๋ณ์(args)
- ๋ชธํต(์ค๊ดํธ ๋ด๋ถ)
|๊ธฐ๋ณธ์ธ์
- ์ธ์ ์์ฑ ์ โ=โ ๋ฌธ์ ๋ค ๊ธฐ๋ณธ ์ธ์ ์ ์ธ ๊ฐ๋ฅ
const greeting = function (name='Anonymous') {
return `Hi ${name}`
}
greeting() ///Hi Anonymous
|๋งค๊ฐ๋ณ์์ ์ธ์์ ๊ฐ์ ๋ถ์ผ์น ํ์ฉ
- ๋งค๊ฐ๋ณ์๋ณด๋ค ์ธ์์ ๊ฐ์๊ฐ ๋ง๊ฑฐ๋ ์ ๊ฑฐ๋ ๋ชจ๋ ํ์ฉ๋จ
|Rest Parameter
- rest parameter(โฆ)๋ฅผ ์ฌ์ฉํ๋ฉด ํจ์๊ฐ ์ ํด์ง์ง ์์ ์์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐฐ์ด๋ก ๋ฐ์ (python ์ *args ์ ์ ์ฌ)
- ๋ง์ฝ rest operator๋ก ์ฒ๋ฆฌํ ๋งค๊ฐ๋ณ์์ ์ธ์๊ฐ ๋์ด์ค์ง ์์ ๊ฒฝ์ฐ์๋, ๋น ๋ฐฐ์ด๋ก ์ฒ๋ฆฌ
const restOpr = function (arg1, arg2, ...restArgs) { return [arg1, arg2, restArgs] } restArgs(1, 2, 3, 4, 5) // [1, 2, [3, 4, 5]] restArgs(1, 2) // [1, 2, []]
|Spread operator
- spread operator(โฆ)๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฐ์ด ์ธ์๋ฅผ ์ ๊ฐํ์ฌ ์ ๋ฌ ๊ฐ๋ฅ.
const spreadOpr = function (arg1, arg2, arg3) {
return arg1 + arg2 + arg3
}
const numbers = [1, 2, 3]
spreadOpr(...numbers) // 6
๐คํจ์ ์ ์ธ์ vs ํจ์ ํํ์
ํจ์ ์ ์ธ์(declaration) | ํจ์ ํํ์(expression) | |
๊ณตํต์ | ๋ฐ์ดํฐํ์ ,ํจ์ ๊ตฌ์ฑ์์(์ด๋ฆ, ๋งค๊ฐ๋ณ์, ๋ชธํต) | |
์ฐจ์ด์ | ์ต๋ช ํจ์ ๋ถ๊ฐ๋ฅ | ์ต๋ช ํจ์ ๊ฐ๋ฅ |
๋น๊ณ | Airbnb style guide ๊ถ์ฅ ๋ฐฉ์ |
|ํจ์์ ํ์
- function์ผ๋ก ๋์ผํจ!
|ํธ์ด์คํ (hoisting) - ํจ์ ์ ์ธ์
- ํจ์ ์ ์ธ์์ผ๋ก ์ ์ธํ ํจ์๋ var๋ก ์ ์ํ ๋ณ์์ฒ๋ผ hoisting ๋ฐ์
- ํจ์ ํธ์ถ ์ดํ์ ์ ์ธ ํด๋ ๋์
add(2,7) //9
function add(num1,num2){
return num1+num2
}
|ํธ์ด์คํ (hoisting) - ํจ์ ํํ์
- ๋ฐ๋ฉด ํจ์ ํํ์์ผ๋ก ์ ์ธํ ํจ์๋ ํจ์ ์ ์ ์ ์ ํธ์ถ ์ ์๋ฌ ๋ฐ์
- ํจ์ ํํ์์ผ๋ก ์ ์๋ ํจ์๋ ๋ณ์๋ก ํ๊ฐ๋์ด ๋ณ์์ scope ๊ท์น์ ๋ฐ๋ฆ
sub(7,2)//Uncaught ReferenceError: Cannot access 'sub' before initialization
const sub = function (num1,num2) {
return num1-num2
}
- ํจ์ ํํ์์ var ํค์๋๋ก ์์ฑํ ๊ฒฝ์ฐ, ๋ณ์๊ฐ ์ ์ธ ์ undefined ๋ก ์ด๊ธฐํ ๋์ด ๋ค๋ฅธ ์๋ฌ๊ฐ ๋ฐ์
console.log(sub)//undefined
sub(7,2)//Uncaught TypeError: sub is not a function
var sub = function(num1,num2){
return num1-num2
}
๐คArrow Function
|ํ์ดํ ํจ์ (Arrow Function)
- ํจ์๋ฅผ ๋น๊ต์ ๊ฐ๊ฒฐํ๊ฒ ์ ์ํ ์ ์๋ ๋ฌธ๋ฒ
- function ํค์๋ ์๋ต ๊ฐ๋ฅ
- ํจ์์ ๋งค๊ฐ๋ณ์๊ฐ ๋จ ํ๋ ๋ฟ์ด๋ผ๋ฉด, โ( )โ ๋ ์๋ต ๊ฐ๋ฅ
- ํจ์ ๋ชธํต์ด ํํ์ ํ๋๋ผ๋ฉด โ{ }โ๊ณผ return๋ ์๋ต ๊ฐ๋ฅ
- ๊ธฐ์กด function ํค์๋ ์ฌ์ฉ ๋ฐฉ์๊ณผ์ ์ฐจ์ด์ ์ ํ๋ฐ๋ถ this ํค์๋๋ฅผ ํ์ตํ๊ณ ๋ค์ ์ค๋ช
const arrow1 = function (name) {
return `hello, ${name}`
}
// 1. function ํค์๋ ์ญ์
const arrow2 = (name) => { return `hello, ${name}` }
// 2. ๋งค๊ฐ๋ณ์๊ฐ 1๊ฐ์ผ ๊ฒฝ์ฐ์๋ง ( ) ์๋ต ๊ฐ๋ฅ
const arrow3 = name => { return `hello, ${name}` }
// 3. ํจ์ ๋ฐ๋๊ฐ return์ ํฌํจํ ํํ์ 1๊ฐ์ผ ๊ฒฝ์ฐ์ { } & return ์ญ์
๊ฐ๋ฅ
const arrow4 = name => `hello, ${name}`
'Language > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JavaScript - ๋ฐฐ์ด(Arrays) (0) | 2022.04.27 |
---|---|
JavaScript - ๋ฌธ์์ด(String) (0) | 2022.04.26 |
JavaScript - ์กฐ๊ฑด๋ฌธ (0) | 2022.04.26 |
JavaScript - ๋ฐ์ดํฐ ํ์ , ์ฐ์ฐ์ (0) | 2022.04.26 |
JavaScript - intro, ๋ณ์ (0) | 2022.04.26 |
๋๊ธ