Итак, я только начал изучать Javascript, и одной из проблем, с которыми я столкнулся, был расчет чаевых на основе выплаченной суммы.Это была моя первая попытка:
var john = {
bills: [124, 48, 268, 180, 42],
calculateTip: function() {
for (var i = 0; i < this.bills.length; i++) {
if (this.bills[i] < 50) {
this.tips[i] = this.bills[i] * 0.2;
} else if (this.bills[i] < 200) {
this.tips[i] = this.bills[i] * 0.15;
} else {
this.tips[i] = this.bills[i] * 0.1;
}
}
return this.tips;
}
};
john.calculateTip();
console.log(john.tips);
Но я получил такую ошибку:
Uncaught TypeError: Cannot set property '0' of undefined
at Object.calculateTip (script.js:8)
at script.js:17
calculateTip @ script.js:8
(anonymous) @ script.js:17
Затем я объявил пустой массив внутри объекта:
var john = {
bills: [124, 48, 268, 180, 42],
tips: [],
calculateTip: function() {
for (var i = 0; i < this.bills.length; i++) {
if (this.bills[i] < 50) {
this.tips[i] = this.bills[i] * 0.2;
} else if (this.bills[i] < 200) {
this.tips[i] = this.bills[i] * 0.15;
} else {
this.tips[i] = this.bills[i] * 0.1;
}
}
return this.tips;
}
};
john.calculateTip();
console.log(john.tips);
И это сработало просто отлично.
Мой вопрос
Когда я делал обычную переменную внутри функции внутри объекта, а не в массиве, у меня не былообъявить это заранее.Всегда ли это так с массивами, и если кто-то может объяснить ошибку, я получил немного больше?