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