J'utilise l'outil génial JSLint pour m'assurer que mon JavaScript est "strict".JavaScript: Erreur - variable déjà définie? Pourquoi?
Quand je l'utilise cependant, je reçois les erreurs suivantes:
'hexRed', 'hexGreen', 'hexBlue', 'color' are already defined (referring to the "else if" clause)
Mon code est ci-dessous. Des idées comment réparer mon code pour le rendre JavaScript "strict"?
function fade(currentStep, numSteps, currentRed, currentGreen, currentBlue, deltaRed, deltaGreen, deltaBlue) {
if (currentStep < numSteps) {
var hexRed = zeroPad(currentRed.toString(16), 2);
var hexGreen = zeroPad(currentGreen.toString(16), 2);
var hexBlue = zeroPad(currentBlue.toString(16), 2);
var color = "#" + hexRed + hexGreen + hexBlue;
document.getElementById('abc').style.backgroundColor = color;
currentRed += deltaRed;
currentGreen += deltaGreen;
currentBlue += deltaBlue;
timerID = setTimeout("fade(currentStep, numSteps, currentRed, currentGreen, currentBlue, deltaRed, deltaGreen, deltaBlue)", 70);
} else if (currentStep == numSteps) {
var hexRed = endingRed.toString(16); // <-- JSLint flags this line
var hexGreen = endingGreen.toString(16); // <-- JSLint flags this line
var hexBlue = endingBlue.toString(16); // <-- JSLint flags this line
var color = "#" + hexRed + hexGreen + hexBlue; // <-- JSLint flags this line
document.getElementById('abc').style.background = color;
}
}
En fait, c'est mauvais ... var hexRed est déclaré dans la portée de la fonction, tous les autres sont effectivement déclarés au niveau de la fenêtre –
@Calgary: Cela ne peut pas être vrai. L'outil de Crockford vous recommande d'utiliser une seule instruction var pour chaque fonction et cela serait fou si hexGreen, hexBlue et la couleur étaient déclarées au niveau de la fenêtre. – Jakob
@Jakob - Mental lapse il semblerait –