Javascript Can';不能将项添加到数组中

Javascript Can';不能将项添加到数组中,javascript,Javascript,我正在尝试向数组中添加一个新节点,在调用createList()时,我认为它是一个新的空数组,所以我一定是做错了什么,因为我得到一个错误,list.nodes未定义 var head = createNode(null); var list = createList(); list.nodes.push(head); // error is here, undefined array function List(){ this.nodes = []; this.addNodeToL

我正在尝试向数组中添加一个新节点,在调用createList()时,我认为它是一个新的空数组,所以我一定是做错了什么,因为我得到一个错误,list.nodes未定义

var head = createNode(null);

var list = createList();
list.nodes.push(head); // error is here, undefined array

function List(){

  this.nodes = [];
  this.addNodeToList = addNodeToList;

  function addNodeToList(data){

    var currentNode = head;
    var newNode = createNode(data);

    while(currentNode.getNextNode() != null){
      currentNode = currentNode.getNextNode();
    }

    currentNode.nextNode = newNode;

    return;
  }
}


function createNode(data){
    return new Node(data);
}

function createList(){
  return new List();
}

function Node(data){
  this.data = data;
  this.nextNode = null;
}

function createList(){
  return new Node(null);
}

您定义了两次creatList函数。 后面的定义不返回节点数组:

 function createList(){
  return new Node(null);
}
删除它,你会没事的

编辑: 考虑以下事项:

var a = 5;
var a = 6;
//OR
var f = function (){ alert(1)}
var f = function (){ alert(2)}

由于JS不支持函数重载,两次声明函数与上面的赋值具有相同的效果-后者隐藏了您两次定义的createList函数。 后面的定义不返回节点数组:

 function createList(){
  return new Node(null);
}
删除它,你会没事的

编辑: 考虑以下事项:

var a = 5;
var a = 6;
//OR
var f = function (){ alert(1)}
var f = function (){ alert(2)}

由于JS不支持函数重载,两次声明一个函数与上面的赋值具有相同的效果-后者隐藏了执行此脚本的更上层

位置…您的代码中有两个
createList
函数。可能只是
list.push(head)
作为
列表
(不知道它是什么类型的对象)不具有名为
节点的数组作为其属性您在哪里执行此脚本…您的代码中有两个
createList
函数。可能只是
列表。推(头)
as
List
(不知道它是什么类型的对象)没有一个名为
nodes
的数组作为它的属性。你应该解释为什么JS执行第二个
createList
,而不是第一个。omg,我怎么会错过这个。我想这是因为现在是凌晨1点。添加了一个快照解释。你应该解释为什么JS执行第二个
createList
,而不是第一个。天哪,我怎么会错过这个。我想是因为现在是凌晨1点。补充了一个镜头说明