Il n'y a pas besoin d'utiliser une boucle for
:
function calculateFee(hours) {
if (isNaN(hours) || hours <= 0) return 0;
if (hours <= 3) return 2;
var additionalHours = Math.round(hours - 3);
return 2 + 0.5 * additionalHours;
}
var fee = calculateFee(5);
Et si vous utilisez une boucle for
est une exigence:
function calculateFee(hours) {
if (isNaN(hours) || hours <= 0) return 0;
var result = 2;
if (hours <= 3) return result;
var additionalHours = Math.round(hours - 3);
for (i = 0; i < additionalHours; i++) {
result += 0.5;
}
return result;
}
Et enfin un exemple en utilisant des objets:
function FeeCalculator(minimalFee, initialHours, additionalHourFee) {
if (isNaN(minimalFee) || minimalFee <= 0) { throw "minimalFee is invalid"; }
if (isNaN(initialHours) || initialHours <= 0) { throw "initialHours is invalid"; }
if (isNaN(additionalHourFee) || additionalHourFee <= 0) { throw "additionalHourFee is invalid"; }
this.minimalFee = minimalFee;
this.initialHours = initialHours;
this.additionalHourFee = additionalHourFee;
}
FeeCalculator.prototype = {
calculateFee: function(hours) {
if (hours <= this.initialHours) return this.minimalFee;
var additionalHours = Math.round(hours - this.initialHours);
return this.minimalFee + this.additionalHourFee * additionalHours;
}
};
var calculator = new FeeCalculator(2, 3, 0.5);
var fee = calculator.calculateFee(5);
Je ne sais pas vraiment de quoi parle votre question. Pourriez-vous élaborer un peu? – roosteronacid