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

你好夥計, 我想問一下這個聲明。 「startNode.a(d)」部分真的讓我頭疼。這是什麼意思?變量「a」的值「startNode」再次調用變量「a」?我不知道這個聲明

謝謝你們這麼多!

^h

我編輯這一點,因爲湯姆問整個代碼: 爲「a」是「路」在此代碼原來的名字......我只是改變了它在我剛纔的問題,使它看起來左邊簡單

.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'有一個屬性是一個叫做'了'這需要一個說法,你是功能在這種情況下調用變量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)返回truthy或falsy。