2017-02-28 255 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); 
相關問題