Преобразование к boolean

Рейтинг: 2Ответов: 1Опубликовано: 08.02.2015

Дан пустой массив a = []. Выражение console.log(a == !a) возвращает TRUE. Я не совсем понимаю почему. !a понятно преобразуется к FALSE. Пустой массив a, по идее, преобразуется к TRUE.(Boolean([]) возвращает TRUE) Получается TRUE == FALSE ==> FALSE / но результат TRUE. Что я упустил?

Спасибо!

Ответы

▲ 2Принят

Это потому что

console.log([].toString() === "") //true

вот немного пруфа

Array.prototype.toString = function() {
 return this.join(",") || true;   
}
var a =[];
console.log(a == !a) // false :)

http://jsfiddle.net/od9p4nh5/1

кстати, из всего вышесказанного следует, что

[0] == false //true
[0] == "" // false
[] ==  "" // true