2016-11-08 3 views
0
var a = startNode && startNode.a(d) 

привет, ребята, Я хотел бы спросить об этой декларации. Часть «startNode.a (d)» действительно заставляет мою голову болеть. Что это значит? Значение «startNode» переменной «a» снова вызывает переменную «a»?Я не уверен в этой декларации

Спасибо, ребята!

H

я редактировать это, потому что Том просил весь код: оригинальное название «а» «путь» в этом коде ... я просто изменил его на мой предыдущий вопрос, чтобы сделать он выглядит просто

.on("click", function(d, i) 
      { 
      var path = startNode && startNode.path(d) || []; 
      startNode = d; 
      link.style("stroke", function(d) 
      { 
       return path.includes(d.source) && path.includes(d.target) ? "#900" : "#999"; 
      }); 
      node.attr("r", function(d) 
      { 
       return path.includes(d) || startNode == d ? 10 : 4.5; 
      }); 
      }); 
+0

'startNode' имеет свойство, которое является функцией называется' a', которая принимает аргумент, вы вызов функции с переменной d в качестве единственного аргумента в этом случае –

+0

Он вызывает метод объекта в 'startNode'. – Barmar

+0

Это ничем не отличается от чего-то вроде 'document.getElementById (d)'. 'document' - это переменная, содержащая объект,' getElementById' - объект, содержащий функцию. – Barmar

ответ

0

Это сокращенный способ писать что-то вроде этого:

var a; 
if (startNode) { 
    a = startNode.a(d); 
} 

Если startNode имеет нулевое значение, то вы не можете вызвать метод a. Что касается результата в a, у вас есть 2 случая.

  1. Если startNode равно нулю, то значение a будет нулевым.
  2. Если startNode не равно нулю, то значение a будет результатом вызова к startNode.a(d);
0

переменная a слева не связано с startNode.a(d) справа. Назначение переменной предполагает, что startNode является объектом, а startNode.a вызывает функцию; интерес к значению a - это то, что startNode.a(d) возвращает правду или фальшивость.

Смежные вопросы