簡體   English   中英

為什么我的變量未定義

[英]Why is my variable undefined

我有這個功能

    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,但我想我已經通過調用函數並將其賦值給變量來定義它?

更改此代碼的功能。 問題是你沒有返回變量學生,當你超出范圍時,變量不再存在。 返回時,您將在調用函數時將其分配給變量。

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

你應該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;
}

您需要在函數末尾返回students數組,以便從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(); 它只是在進行函數調用而不是分配數組。

您不能在創建對象的函數調用中請求未返回的對象的長度。 您沒有為學生變量分配任何內容,因為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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM