Javascript 为什么我的变量没有定义

Javascript 为什么我的变量没有定义,javascript,arrays,undefined,Javascript,Arrays,Undefined,我有这个功能 function getStudents() { var students = []; students[0] = {name: "Anna", mark: 65, sex: "female"}; students[1] = {name: "James", mark:33, sex: "male"}; student

我有这个功能

    function getStudents() {
                    var students = [];
                    students[0] = {name: "Anna", mark: 65, sex: "female"};
                    students[1] = {name: "James", mark:33, sex: "male"};
                    students[2] = {name: "William", mark: 87, sex: "male"};
                    students[3] = {name: "Jane", mark: 72, sex: "female"};
                    students[4] = {name: "Rikki", mark: 60, sex: "male"};
                    students[5] = {name: "Angela", mark: 58, sex: "female"};    
            }
然后在身体里我试着这样做:

        var students = getStudents();

        var referrals = ["James", "Angela"];
                for(var i = 0; i < students.length; i++){
        var pTag ="<p>";
var students=getStudents();
var转介=[“詹姆斯”、“安吉拉”];
for(var i=0;i

然而,当我尝试遍历循环时,它告诉我它无法完成未定义变量的长度,但我认为我已经通过调用函数并将其分配给变量来定义了它?

更改此代码的函数。问题是,当您超出范围时,您没有返回变量studentat变量不再存在。在调用函数时,使用返回值将其分配给变量

function getStudents() {
                var students = [];
                students[0] = {name: "Anna", mark: 65, sex: "female"};
                students[1] = {name: "James", mark:33, sex: "male"};
                students[2] = {name: "William", mark: 87, sex: "male"};
                students[3] = {name: "Jane", mark: 72, sex: "female"};
                students[4] = {name: "Rikki", mark: 60, sex: "male"};
                students[5] = {name: "Angela", mark: 58, sex: "female"};    
                return students;            
}

您应该
返回变量

function getStudents() {
    var students = [];
    students[0] = {name: "Anna", mark: 65, sex: "female"};
    students[1] = {name: "James", mark:33, sex: "male"};
    students[2] = {name: "William", mark: 87, sex: "male"};
    students[3] = {name: "Jane", mark: 72, sex: "female"};
    students[4] = {name: "Rikki", mark: 60, sex: "male"};
    students[5] = {name: "Angela", mark: 58, sex: "female"};    
    return students;
}

对于要从getStudents分配数组的变量,需要在函数末尾返回students数组:

function getStudents() {
     var students = [];
     students[0] = {name: "Anna", mark: 65, sex: "female"};
     students[1] = {name: "James", mark:33, sex: "male"};
     students[2] = {name: "William", mark: 87, sex: "male"};
     students[3] = {name: "Jane", mark: 72, sex: "female"};
     students[4] = {name: "Rikki", mark: 60, sex: "male"};
     students[5] = {name: "Angela", mark: 58, sex: "female"}; 
     return students;   
}

否则,如果您说
var students=getStudents();
它只是执行一个函数调用而不是分配数组。

您不能请求在创建对象的函数调用中没有返回的对象的长度。您没有将任何内容分配给students变量作为getStudents()函数不返回值或对象,因此会出现错误

在下面的jsfiddle上使用开发者控制台来查看这一演示


你忘了按其他人说的返回数组。此外,函数中的
var students=[]
对外部世界没有影响。该var只存在于函数中。请不要发布不完整的答案,然后对其进行编辑以使其完整。首先发布完整的答案。
function getStudents() {
    var students = [];
  students[0] = {name: "Anna", mark: 65, sex: "female"};
  students[1] = {name: "James", mark:33, sex: "male"};
  students[2] = {name: "William", mark: 87, sex: "male"};
  students[3] = {name: "Jane", mark: 72, sex: "female"};
  students[4] = {name: "Rikki", mark: 60, sex: "male"};
  students[5] = {name: "Angela", mark: 58, sex: "female"};  

  return students;
}

var students = getStudents();
//var referrals = ["James", "Angela"];
console.log(students);