SyntaxError: test for equality (==) mistyped as assignment (=)?

Message

Warning: SyntaxError: test for equality (==) mistyped as assignment (=)?

Type d'erreur

Uniquement pour Firefox. Un avertissement sous la forme d'une exception SyntaxError, généré uniquement si la préférence javascript.options.strict vaut true.

Quel est le problème ?

Le code utilise une affectation (=) là où on attendrait un test d'égalité (==). Afin d'aider au débogage, le moteur JavaScript déclenche des avertissements lorsqu'il détecte ce motif.

Exemples

Des affectations utilisées au sein d'expressions conditionnelles

Il est conseillé de ne pas utiliser d'affectations simples dans des expressions conditionnelles (comme le test effectué avec if...else) car on peut confondre les deux à la lecture du code. Ainsi, on n'utilisera pas la forme suivante :

js
if (x = y) {
  // do the right thing
}

Si on doit effectivement affecter une variable dans une expression conditionnelle, on entourera l'affectation d'une paire de parenthèses supplémentaires afin de montrer qu'on veut bien effectuer une affectation, comme ceci :

js
if ((x = y)) {
  // exécuter le code
}

Autrement (généralement), on veut plutôt utiliser un opérateur de comparaison (== ou === par exemple) :

js
if (x == y) {
  // exécuter le code
}

Voir aussi