Почему 0 == [] дает true?

Мне непонятно почему:

console.log(0 == [])

показывает true, а:

console.log('0' == [])

говорит false, что это за мистика?


Ответы (1 шт):

Автор решения: Vasily

Все дело в привидении типов.

В случае когда ноль – это строка:

console.log("0" == [])
// "0" == ""
// false

массив будет приведен к строке, т.е будут сравниваться "0" и "", а поскольку одна строка пустая, а вторая нет, то мы получаем false.

В случае когда 0 – это число, массив так же будет приведен сначала к строке и далее уже эта строка – к 0, поэтому мы получим true:

console.log(0 == [])
// 0 == ""
// 0 == 0
// true
→ Ссылка