Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Может кто объяснить =)? (https://javascript.ru/forum/misc/16719-mozhet-kto-obyasnit-%3D.html)

mexoboy 19.04.2011 11:52

Может кто объяснить =)?
 
var foo = "0";

if(foo)
   console.log(true);
else
   console.log(false);

if(foo == true) 
   console.log(true);
else
   console.log(false);


Выведет:
true
false

Очень странно, я всегда думал, что в инструкции if, идет приведение условия к булеву типу... Может кто раскроет мне глаза?

ksa 19.04.2011 11:57

mexoboy, в первом условии переменная foo определена - true. Во втором не равна true - false...

Что не понятно?

Matre 19.04.2011 12:05

Цитата:

идет приведение условия к булеву типу
А как можно узнать, верно ли условие, если оно не булевого типа?

Kolyaj 19.04.2011 12:10

http://javascript.ru/ecma/part11#a-11.9.3
http://javascript.ru/ecma/part12#a-12.5

Лучшие объяснения.

Matre 19.04.2011 12:14

Там же не написано, почему так.

Kolyaj 19.04.2011 12:55

Matre,
физика отвечает на вопрос "как происходит", философия -- на вопрос "почему происходит". Если вас не устраивает вариант "проектировщики языка так захотели", то можете пофилософствовать самостоятельно.

ksa 19.04.2011 13:34

Цитата:

Сообщение от Matre
А как можно узнать, верно ли условие, если оно не булевого типа?

Бивас, тест... (с) :)

mexoboy 19.04.2011 13:35

Цитата:

Сообщение от ksa (Сообщение 101349)
mexoboy, в первом условии переменная foo определена - true. Во втором не равна true - false...

Что не понятно?

Не понятен принцип сравнения. Получил сылки от Kolyaj - разобрался.

В php if("0") - выдаст false.

Matre
Я посмотрю ты троль еще тот.

P.s. Kolyaj спасибо за ссылки.

Matre 19.04.2011 13:44

Цитата:

Я посмотрю ты троль еще тот.
— У тебя есть мозг или нет?
— {foo : 3}

Ты можешь представить себе такой диалог?
Я не могу.
Ответ может быть либо "истина" — true, либо "ложь" — false.
И сарказма никакого не было.

mexoboy 19.04.2011 14:01

Цитата:

Сообщение от Matre (Сообщение 101378)
— У тебя есть мозг или нет?
— {foo : 3}

Ты можешь представить себе такой диалог?
Я не могу.
Ответ может быть либо "истина" — true, либо "ложь" — false.
И сарказма никакого не было.

Вот смотри - я занимаюсь программированием на php несколько лет, сейчас пишу больше на js. В моем черепе php оставил не стираемый след о том, что "0" - это ложь. Спустя несколько лет я случайно обнаружил, что пишу неправильно - и задал вопрос на эту тему. Вроде полностью привел код и комментарий для вопроса.

Плохой я или хороший программист - мне сложно оценить (судя по занимаемой должности и отзывах вроде неплохой). Но вот судя по комментарию - что зачем ссылки давать, если там нет ответа на вопрос (явно с упором, что автор дибил) - по мне-так кажется тролизмом.

Не все рождаются гениями, каждый учится на своих ошибках и на опыте других. Мне кажется нормальное явление?
Кстати задал данный вопрос всем своим знакомым программистам - ответил только один человек сходу - программист на python


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