¿Cómo leo? String comparison can be forced by: "" + a == "" + b de https://262.ecma-international.org/5.1/#sec-11.9.6 ?
Number() en lugar de unary + ) para implementar esas conversiones y hacerlas más legibles para un principiante?MDN tiene una tabla de precedencia de operadores .
La suma (cadena y aritmética) ocurre antes de la igualdad. En igualdad de condiciones, las cosas se hacen de izquierda a derecha.
Así dado:
"" + a == "" + b primero "" + a se evalúa y es equivalente a String(a) .
Luego se evalúa "" + b y es equivalente a String(b) .
Luego, los dos resultados se comparan usando == .
Se usa porque es menos para escribir que String(a) .
Si Number(a) es más legible que +a es discutible. Hay cosas que aprender acerca de ambos. Para la conversión a número también hay parseInt , parseFloat y multiplicación por 1, así que todo lo siguiente:
parseInt(a) parseFloat(a) +a a * 1 todos podrían dar el mismo resultado (por ejemplo, donde a es una cadena entera como 10). Pero puede que no para otros valores (como '10.6'). La conversión a número también es complicada por NaN, por lo que si una o ambas expresiones se resuelven en NaN, entonces no son iguales entre sí ('porque NaN no es == o === a ningún valor, ni siquiera a sí mismo).
Que te diviertas. :-)