需要有关此代码的帮助。我做错了什么?
问题: 创建10辆汽车,每辆车都有颜色和数字。车辆应按0到9的顺序编号.0到4的车应该是“绿色”,5到9的车应该是“蓝色”。将汽车整理成一个名为carGarage的阵列。
准则: 为了避免在创建10个单独的汽车时出现重复代码,首先要创建一个构造函数Car,它接受颜色和数字参数并将它们设置为this.color和this.number。然后创建10辆汽车,并将它们放在carGarage阵列中。
// create a car constructor function
var Car = function(color, number) {
this.color = color;
this.number = number;
}
// create a carGarage array
var carGarage = [10];
// create a loop that creates cars and places them in carGarage
for (var i = 0; i <= 9; i++) {
var color, number;
i <= 4? color = 'green': color = 'blue';
number = i;
var newCar = new Car(color, number);
carGarage.push(newCar);
}
// test code
for (var i = 0; i < carGarage.length; i++) {
car = carGarage[i];
console.log(car.color + " car #" + car.number);
}
预期输出
green car #0
green car #1
green car #2
green car #3
green car #4
blue car #5
blue car #6
blue car #7
blue car #8
blue car #9
实际输出
undefined car #undefined
green car #0
green car #1
green car #2
green car #3
green car #4
blue car #5
blue car #6
blue car #7
blue car #8
blue car #9
答案 0 :(得分:2)
这一行是关键:
var carGarage = [10];
您已使用一个元素初始化数组 - 10
,而不是长度为10的数组。您必须将其更改为:
var carGarage = [];
所以你初始化空数组。
您有2次undefined
,因为未定义10.color
和10.number
。