Un amigo mío descubrió un comportamiento interesante en algunos códigos Javascript, que decidí investigar más a fondo.¿Una función es más grande que una matriz?
La comparación
(function (x) {return x*x;}) > [1,2,3]
vuelve true
en la mayoría de los principales navegadores (Firefox, Chrome, Opera y Safari) y false
en IE9. Para mí, no hay un resultado lógico de esta comparación que no sea undefined
, ya que no hay forma de decir que una función es mayor que una matriz.
Al leer esto en el estándar ECMA-script, dice que los argumentos reales de >
cuando se usan en objetos son el resultado de llamar a la operación interna ToNumber en los argumentos. Algunos experimentos y lecturas adicionales me dicen que esto no es lo mismo que aplicar una conversión de tipo como (Number) arg
. Al leer la especificación, me cuesta entender qué está pasando aquí.
¿Alguien puede informarme sobre lo que realmente está sucediendo aquí?
, por supuesto, la función es más grande que la matriz, que puede producir matrices heckuvalotta ;-) –
No han leído lo suficiente de la especificación todavía. El operador '>' también puede comparar cadenas. – Pointy
@Pointy, de hecho. 'f' es mayor que '1' (¿hay un significado oculto?). –