2017-02-28 133 views
1

我有这个功能为什么我的变量未定义

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>"; 

然而,当我尝试去通过循环它告诉我它不能做一个未定义变量的.length,但我想我已经通过调用该函数并将其分配给一个变量来定义它了?

+6

你忘记返回数组 –

+0

其他人说什么。另外,函数中的'var students = []'对外部世界没有影响。该var仅存在于该函数中。 –

回答

3

更改此代码的功能。问题是你没有返回变量学生,当你超出了变量不存在的范围时。随着返回,您将在调用函数时将其分配给变量。

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;    
} 
+1

请不要发布不完整的答案,然后编辑它们以使它们完整。首先发布一个完整的答案。 –

1

你应该return变量

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; 
} 
0

您需要在该变量的函数的最后返回学生阵列从getStudents分配数组:

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();它只是做一个函数调用,而不是分配数组。

-1

您不能请求在创建对象的函数调用中没有返回的对象的长度。由于getStudents()函数没有返回值或对象,因此您得到的错误,因此您没有为学生变量赋值。上的jsfiddle

使用开发者控制台下面来看看这个证明

jsFiddle

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); 
相关问题