Właśnie odkryłem błąd w pluginowej wtyczce 3rd party, która wygląda na to, że została spowodowana przez minifier kodu javascript.Dlaczego javascript generuje różne błędy dla łańcuchów i literałów z ++?
Oryginalny kod, moim zdaniem, miało być to:
this.id = "ui-id-" + ++n;
Zamiast tego został minified do:
this.id="ui-id-"+++n;
Wynika to w następujący błąd w Chrome:
Uncaught ReferenceError: Invalid left-hand side expression in postfix operation
Podobny błąd w Firefoksie. Irytująco, w Chrome moje własne wtyczki funkcje JavaScript wciąż były tworzone poprawnie, ale w Firefoksie ten błąd spowodował, że moje funkcje nie zostały utworzone, a moja wtyczka zawiedzie.
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
Nie jestem pewien, jakie pytanie zadać tutaj -
- Dlaczego +++ zawsze się interpretować jako ++ +?
- Jakie minifiery powodują ten błąd?
- Dlaczego Firefox traktuje ten błąd bardziej poważnie niż Chrome i powoduje, że moje własne funkcje javascript w Wordpress nie zostaną utworzone?
- Dlaczego bar ++ otrzymuje miękki błąd (NaN), ale "ID -" ++ dostaje poważny błąd?