让我们说我有一个例子,有人可以通过挑选选项订购汽车。
如果他们订购了两辆车,我希望能够使用相同的功能,但不能" clobber"变量名称。这是一个例子:
cars = [];
function car(color, kind) {
this.color = color;
this.kind = kind;
}
div.addEventListener('click', function(){
if(cars.length) {
newCar = new car('red', 'chrysler');
} else {
newCar = new car('red', 'buick');
}
cars.push(newCar)
}, false);
我是否更正,每次点击div
时,都会生成一个新car
(而不是更改原车)?
如果他们有相同的变量名,我就不知道如何回去编辑第一辆车。
能够说出var car+cars.length
并获得cars1
,cars2
等会很酷。
答案 0 :(得分:0)
它会被覆盖,因为你已经在全局范围内定义了变量(但它并不重要,因为你只是将它推送到数组中)。
你不能var car+cars.length
(动态变量名称是完全不同的,你不需要进入,但如果你的情况需要它,那么看看{{3 }})。
但是,您可以只显式定义范围,以便永远不会覆盖它:
div.addEventListener('click', function(){
var newCar; //redefine each time to reinitialize the variable
if(cars.length) {
newCar = new car('red', 'chrysler');
} else {
newCar = new car('red', 'buick');
}
cars.push(newCar)
}, false);