Функция больше массива?

Мой друг обнаружил интересное поведение в некотором коде Javascript, которое я решил исследовать дальше.

Сравнение

(function (x) {return x*x;}) > [1,2,3]

возвращает true в большинстве основных браузеров (Firefox, Chrome, Opera и Safari) и false в IE9. Для меня нет другого логического результата этого сравнения, кроме undefined , поскольку нет способа сказать, что функция больше, чем массив.

Читая об этом в стандарте сценариев ECMA, говорится, что фактические аргументы > , когда он используется для объектов, являются результатом вызова внутренней операции ToNumber для аргументов. Некоторые эксперименты и дальнейшее чтение говорят мне, что это не то же самое, что применение преобразования типа, такого как (Number) arg . Читая спецификацию, мне трудно понять, что здесь происходит.

Может ли кто-нибудь рассказать мне, что на самом деле здесь происходит?

43
задан evilcandybag 21 February 2012 в 16:34
поделиться