2016-04-20 5 views
0

Почему пустой массив оценить как ложь:Истина для пустого массива

[]==false//true 

и операция AND с 1 равно верно:

[]&&1==true//true 

и перепутаны 1 равно неверно:

1&&[]==false//true 

Что выглядит действительно странно:

[]&&5==false//true 
+2

@JeremyBanks Мне очень жаль, но я не просил вашего совета, мне нужно объяснение, если вы не можете объяснить, пожалуйста, не меняйте мой вопрос. Спасибо, – ProllyGeek

+0

просто любопытно, как вы это поняли? –

+2

Потому что '==' оператор безумный и имеет семантику, которую никто никогда не должен изучать, потому что это побудило бы их использовать ее вместо чего-то разумного типа '==='. –

ответ

-1

&& возвращает левую, если это falsy, в противном случае она возвращает правая

true является «равно» к 1

false является «равно» к 0

[] не является «равным» на true или false

[] является правдивым val ие

== имеет более высокий приоритет, чем && (выполняется первая),

так:

[]&&1==true =>[] && true =>true

1&&[]==false =>[] && true =>true

[]&&5==false =>[] && true =>true

+0

'[] && 1 == true' is' [] && (1 == true) ', а не' ([] && 1) == true'. – Oriol