Je viens de découvrir un bug dans un plugin wordpress tiers qui semble avoir été causé par un mineur de code javascript.
Le code original, je crois, était censé être le suivant :
this.id = "ui-id-" + ++n;
Au lieu de cela, elle a été réduite à :
this.id="ui-id-"+++n;
Cela entraîne l'erreur suivante dans Chrome :
Uncaught ReferenceError: Invalid left-hand side expression in postfix operation
Et une erreur similaire dans Firefox. Curieusement, dans Chrome, les fonctions Javascript de mes propres plugins ont été créées avec succès, mais dans Firefox, cette erreur a empêché la création de mes fonctions et fait échouer mon plugin.
var n = 1;
var foo = 10;
var bar = "ID-";
console.log(foo+++n); // results in 11
console.log(foo); // also results in 11
console.log(bar+++n); // results in NaN soft error/warning
console.log ("ID-"+ ++n); // results in ID-2
console.log ("ID-"+++n); // hard error
Je ne suis pas vraiment sûr de la question à poser ici -
- Pourquoi +++ est toujours interprété comme ++ + ?
- Quels minifieurs provoquent ce bogue ?
- Pourquoi firefox traite-t-il cette erreur plus sérieusement que Chrome et provoque-t-il l'échec de la création de mes propres fonctions javascript dans Wordpress ?
- Pourquoi bar++ obtient-il une soft error (NaN) mais "ID-"++ une hard error ?