나는 D3이 발견 :자바 스크립트에서 "방어 참조"란 무엇입니까?
function d3_dispatch_event(dispatch) {
var listeners = [],
listenerByName = new d3_Map;
function event() {
var z = listeners, // defensive reference
i = -1,
n = z.length,
l;
while (++i < n) if (l = z[i].on) l.apply(this, arguments);
return dispatch;
}
event.on = function(name, listener) {
...
"방어 참조"여기에 무엇을 의미합니까?
JavaScript에서는 의미가 없습니다. 그것은 그 주석의 저자에게 의미가 있습니다. –
@ 스쿼트 멋진 잡기 (# 58 줄). 만약 당신이 그것을 만들고,이 코멘트를 제거 :) 대답을 수락하자. – Leviathan
나는 완전히 그것에 대해 정확하지 않습니다. 그 선은 제거를위한 것 같습니다. 제거 항목을 계속해서 액세스 할 수 있지만 (원하는 항목이라고 생각됩니다), [행 63] (https://github.com/mbostock/d3/blob/master/src/event/dispatch.js# L63)은 실제로'listen '에'.push()'를 수행한다. 그러나, 그들은'while' 루프를 위해'.length'를 캐쉬했기 때문에, 추가 된 항목에는 도달하지 않습니다. 그래서 제거 된 핸들러가 여전히 발사되도록 제거하는 것입니다. 가서 대답 해주세요. 나는 모든 각도를 분석했는지 확신 할 수 없어 다시 일해야합니다! :-) –