๊ฐ์
๊ณผ๊ฑฐ์ ๊ธฐ๋ณธ๊ฐ ์ค์ ์ ํจ์ ๋ด๋ถ์์ ๋งค๊ฐ๋ณ์ ๊ฐ์ ๊ฒ์ฌํด undefined์ธ ๊ฒฝ์ฐ ๊ฐ์ ํ ๋นํ๋ ๋ฐฉ์์ด์๋ค.
function multiply(a, b) {
b = (typeof b !== 'undefined') ? b : 1
return a*b
}
์ด์ ๋ ๊ธฐ๋ณธ๊ฐ ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ๊ฐ๋จํ default๊ฐ์ ์ค ์ ์๋ค.
function multiply(a, b = 1) {
return a*b
}
์์ฉ 1
๊ธฐ๋ณธ๊ฐ์ ํธ์ถ ์์ ํ๊ฐ๋์ด, ํจ์๊ฐ ํธ์ถ๋ ๋๋ง๋ค ์๋ก์ด ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค.
function goodCoder(coding = coder()) {
return coding
}
let numberOfTimesCalled = 0
function coder(){
numberOfTimesCalled += 1
return numberOfTimesCalled
}
goodCoder() // 1
goodCoder() // 2
์์ฉ 2
์์ชฝ์ ๋งค๊ฐ๋ณ์๋ ๋ท์ชฝ์ ๋งค๊ฐ๋ณ์ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํ ์ ์๋ค.
function coder(name, greeting, message = greeting + ' ' + name) {
return [name, greeting, message]
}
console.log(coder('Noran', 'Hi')); // ["Noran", "Hi", "Hi Noran"]
console.log(coder('Noran', 'Hi', 'Happy Birthday!')); // ["Noran","Hi","Happy Birthday!"]
์ ํจ๋ฒ์ ํจ๊ณผ (Scope Effects)
ํ๊ฐ ์ด์์ ๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ด ์ง์ ๋๋ฉด ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก๋ด์ ์๋ณ์๋ค(identifiers) ๋์์ผ๋ก ๋๋ฒ์งธ ์ค์ฝํ(Environment Record)๊ฐ ์์ฑ๋๋ค.
๊ทธ๋ ๊ฒ ๋์ด ํจ์ ๋ด๋ถ์์ ์ ์ธ๋ ํจ์์ ๋ณ์๋ค์ ๋งค๊ฐ๋ณ์ ๊ธฐ๋ณธ๊ฐ์ ์ฐธ์กฐํ ์ ์๋ค.
์์ 1 : ์๋ ์ฝ๋๋ ` f `๋ฅผ ํธ์ถ ์ ReferenceError๋ฅผ ๋ฐ์์ํจ๋ค.
function f(a = go()) {
function go() { return ':P' }
}
์์ 2 : ์๋ ์ฝ๋๋ ๋งค๊ฐ๋ณ์ ๊ฐ๋ณธ๊ฐ์ด ์์ฒด ์ค์ฝํ์ ์์ผ๋ฏ๋ก undefined๋ฅผ ํ๋ฆฐํธํ๋ค.
function f(a, b = () => console.log(a)) {
var a = 1
b()
}
์ถ์ฒ : MDN https://developer.mozilla.org/ko