18.06.13 04:37 작성
·
140
1
5:10 쯤에 a를 가지고 새로운 함수를 만들어줘 this는 b가 되었으면 좋겠고, 인자에는 1과 2를 미리 넣어둘께, 이렇게해서 새로 만들 함수는 변수D에 담아줘 그 변수 D는 함수인데, 1과 2를 받지말고 그 뒤에있는 3번째 인자만 받도록 해줘 라고 말씀 하시는데 이게 이해가 조금 안되는데요.
미리 설정된 디폴트 파라미터가 있을 경우에 뒤에 붙여서 사용되는 것으로 알고있습니다. 실제 결과값도 1과 2를 받지말고 라는 부분이랑은 상충되는 부분이 있습니다. 어떻게 이해하면 좋을까요?
답변 2
2
2018. 06. 13. 18:41
음 저도 이 문서 보고 질문 드렸는데 제가 용어 선택이 실패했나보네요
"1과 2를 받지 말고"에서 이상하다 싶어서 질문 드렸습니다. 받지말라는게 아니라 이미 줬는데? 라고요
d변수에 함수를 넣을 때, 1과 2는 이미 인수로 설정되어 있으니 넘어가고,
d(3)로 주는 인수는 뒤에 붙여서 실행으로 이해했거든요. 근데 받지말라고 해서 뭔가 싶었습니다.
답변감사드립니다.
1
2018. 06. 13. 16:12
아마도 es6의 default parameter를 말씀하시는 것이 아닐까 싶은데, 그것과는 무관한 내용입니다.
function a (x, y, z) { console.log(x, y, z); }
var d = a.bind({}, 1, 2);
의 결과는
d = function (z) { console.log(1, 2, z); }
가 되는 것이에요.
인자 x, y는 이미 바인드 실행과 동시에 미리 넘겨놓고,
나머지 z인자만 받아 원래 내용을 실행하는 새로운 함수를 만들라는 명령입니다.
제 표현력의 한계로 좀더 잘 설명해 드리지 못한 것 같아 안타까움이 드네요... 아래 링크 참조해주시면 좋겠습니다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Function/bind