Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   true or false? два сразу? (https://javascript.ru/forum/misc/11441-true-false-dva-srazu.html)

mmfStudent 24.08.2010 02:05

true or false? два сразу?
 
Вот интересная задачка, не ясно почему это работает.
alert([0] == false);
if ([0])
    alert(true);

Octane 24.08.2010 02:20

Потому что при нестрогом сравнении срабатывает приведение типов
[0] → "0" → 0 → false == false


var array = [0];
array.toString = function () {
    return "1";
};

alert(array == false);

Gvozd 24.08.2010 02:25

читайте справку от истоков
Если вкратце, то при операции сравнения(первая ваша строчка), оба операнда приводятся к числу, и равны оба нулю
в условии же массив приводится к булевому, и становится истиной согласно правилам приведения типа

в таком же варианте, сравнение уже false, так как массив приводится не к нулю, а единице, хотя он также истинен самостоятельно
alert([1] == false); 
alert([1] == 1); 
if ([1]) 
    alert(true);

Gvozd 24.08.2010 02:26

Octane,
ты неверно приводишь типы, для операции сравнения
Цитата:

Если какой-либо операнд - число или булево значение, то операнды преобразуются в числа; если какой-либо операнд строка - второй преобразуются в строку

mmfStudent 24.08.2010 02:42

Цитата:

Сообщение от Gvozd (Сообщение 68399)
читайте справку от истоков
Если вкратце, то при операции сравнения(первая ваша строчка), оба операнда приводятся к числу, и равны оба нулю
в условии же массив приводится к булевому, и становится истиной согласно правилам приведения типа

Спасибо, все ясно.


Часовой пояс GMT +3, время: 16:42.