Почему результат true ?
alert( ['x'] == 'x' );
Решение
Решение
Если с одной стороны — объект, а с другой — нет, то сначала приводится объект.
В данном случае сравнение означает численное приведение. У массивов нет valueOf, поэтому вызывается toString, который возвращает список элементов через запятую.
В данном случае, элемент только один - он и возвращается. Так что ['x'] становится 'x'. Получилось 'x' == 'x', верно.
P.S.
По той же причине верны равенства:
alert( ['x','y'] == 'x,y' ); // true alert( [] == '' ); // true
#232