我正在查看以下代码。在我的控制台调试器中,我得到了
无法读取未定义的属性“长度”
我认为这里的想法是连接两组节点,但是我不确定为什么我会得到未定义的
createNodes: function(nodes1, nodes2...){
...
var nodes = (nodes1 && nodes2) ? nodes1.concat(nodes2) : (nodes1 || nodes2),
lenNodes = nodes.length;
//output in console, length is undefined
...
答案 0 :(得分:3)
此代码检查两个节点集是否真实(可能是数组)它将连接它们,否则如果其中一个节点是真实的(已定义),它将使用它作为nodes
。
因此,简而言之,当nodes1
具有假值并且nodes2
为undefined
时会发生错误。
答案 1 :(得分:1)
呀。但我不认为如果nodes2未定义,那么结果将是未定义的。只有当nodes1和nodes2都未定义时才会发生这种情况,因为如果只有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);
}

答案 2 :(得分:0)
我明白了。实际上,传入的第二个参数nodes2未定义。如果其中一个未定义,那么这将使整个语句不确定。