2014-12-22 3 views
1

함수와 함께 메서드 체이닝을 사용하는 방법을 완전히 이해하지 못했습니다. 다음은 몇 가지 경우가 있습니다D3.js : 메서드 체인을 통해 인수 전달

예상 케이스

var dataset = [ 5, 10]; 

function count(d) { 
    return "I can count up to " + d ; 
} 
      d3.select("body").selectAll("p") 
       .data(dataset) 
       .enter() 
       .append("p") 
       .text(count); 

내가하지 않는 것은 수정 카운트 기능

function count(d, a) { 
    return "I can count up to " + d + a ; 
} 

출력에서이 출력은

I can count up to 5 

I can count up to 10 

출력

I can count up to 50 

I can count up to 101 

이 글을 읽으십시오. 그러나 나는 여전히 뭔가를 놓치고 있습니다. 내가 다시 읽어야 할까? 당신이 d3.js에서 함수를 호출 할 때

How are input parameters filled in javascript method chains?

+2

분명히 요소의 인덱스는 두 번째 매개 변수로 전달됩니다 . 그래서 처음으로 50을 얻습니다. 실제로는 '5'+ '0'이고 101은 '10'+ '1'입니다. –

답변

0

.text의 서명은 다음과 같습니다 그래서

.text(function(datum, index){ 

}); 

:

return "I can count up to " + d + a ; 

하는 것은 의미

return string + datum + index. 

마지막으로 Javascript를 사용하면 문자열로 시작하면 모든 것이 문자열로 강제 변환되므로 d + a은 5와 0을 연결 한 다음 10과 1을 연결합니다.