JavaScript - default parameter
in JS on 공부, Javascript
매개변수 기본값. 함수의 인자로 넘어온 애들의 기본값을 지정해줄 수 있다.
원래는 다음과 같이 해준다.
const f = function(x,y,z){
x = x ? x: 4
y = y || 5
if(!z){
z = 6
}
}
f(1) // 1 5 6
이런 식으로 함수 내에서 해줬다.
f(0, null) //4 5 6
정말 값이 넘어오지 않은 것을 확인하고 싶다면
x = x === undefined ? x : 4 //0 5 6
y = typeof y === 'undefined' || 5
로 바꿔주면 된다.
이제는
const f = function(x=4, y=5, z=6){
}
f(0, null) //0 null 6
이렇게 쉽게 하면 된다.
undefined 혹은 누락된 파라미터에 대해서만
식
function a (a = 1, b = a + 1, c = 3){
}
a(1, undefined, 3) // 1 2 3이 된다.
function a (a = 1, b = c + 1, c = 3){ //이건 안된다. let선언과 동일한 효과여서 순서가 중요하다.
}
let 선언과 동일한 효과
TDZ에 걸린다.
기본값으로 할당하고자 하는 값이 변수일 경우 주의사항
let a = 10
let b = 20
function f(aa = a, b = b){
console.log(aa, b)
}
f(1) // b is not defined. 인자로 선언할 변수 명은 달라야 한다. TDZ와 관련.
arguments에 영향을 주냐
//유사배열 객체(array-like object): 객체인데, 각 프로퍼티의 키가 인덱스이고, length라는 프로퍼티가 있는 객체
const a = function(a = 1, b = 2, c = 3){
console.log(arguments) //함수의 인자들을 배열처럼 생긴 객체로 만들어줌.
//유사 배열 객체 {0:1, 1:2, 2:3, length:3, callee: , }
console.log(a,b,c)
}
a() //argument에 아무것도 안 들어간다.
a(4)
a(4, 5)
a(4, undefined, 6)
a(4, 5, 6)
arguments에는 실제 인자로 넘겨준 모든 애들을 배열로 갖는다.
a(4,5,6,6,7)
해도 arguments 에는 [0:4, 1:5, 2:6, 3:7,,,]이렇게 들어갈 것이다. 넘겨준 인자들을 통으로 받는 객체이다. arguments는 객체인데 배열 메소드를 호출하면 에러가 난다.