2015-05-08 124 views
0

我正在看下面的代碼。在我的控制檯調試器中我得到長度返回undefined

無法讀取的不確定

我認爲這裏的想法是連接兩個節點集的特性「長度」,但我不知道爲什麼我越來越不確定

createNodes: function(nodes1, nodes2...){ 
... 
var nodes = (nodes1 && nodes2) ? nodes1.concat(nodes2) : (nodes1 || nodes2), 
    lenNodes = nodes.length; 
//output in console, length is undefined 
... 
+0

您可以分享你的html代碼?以及你如何創建節點1和節點2? –

+1

什麼是'節點1'和'節點2'?其中之一是未定義的。 –

+0

這個方法是如何調用的?節點1和節點2的值是什麼? –

回答

3

這段代碼檢查兩個節點集是否都是truthy(可能是數組),它會連接它們,否則如果其中一個是truthy(已定義),它將使用它作爲nodes

所以簡而言之,當nodes1有一個虛假值並且nodes2undefined時發生錯誤。

0

我想通了。實際上,傳入的第二個參數node2是未定義的。如果其中一個是未定義的,那麼這會使整個語句不確定。

+0

,這聽起來不對 - 如果其中一個非空,你應該得到那一個 – CupawnTae

+0

@CupawnTae它聽起來不對。以上Grassator的回答給出了更好的描述。 – Tony

1

是的。但我不認爲如果節點2未定義,那麼結果將是未定義的。它會發生僅當nodes1和nodes2是「undefined`如果只是nodes2是因爲不確定,則值將是nodes1裏面是空的陣列和所有陣列由length屬性的

var createNodes = function(nodes1, nodes2){ 
 
nodes1 = undefined; 
 
    nodes2 = undefined; 
 
    
 
var nodes = (nodes1 && nodes2) ? nodes1.concat(nodes2) : (nodes1 || nodes2), 
 
    lenNodes = nodes.length; 
 
console.log(lenNodes); 
 
}

+0

不完全 - 如果你調用'createNodes(0)'或'createNodes(false)'(例如),你也會得到undefined – CupawnTae