Неадекватное поведение оператора if - страница 3

 
xordword85:

Всем привет, сломал весь мозг но не понял что за бред.

Смотрите, внешний иф никогда не срабатывает, так и должно быть. НО при этом код вообще не работает, ни один алерт не вылетает, и ошибок компиляции тоже нет.

Теперь внимание - стоит во внутреннем ифе вместо if (1) написать if (0) алерты срабатывают. ЧТО вообще происходит?

Уточню - Alert("333"); никогда не срабатывает, в тот иф вообще никак попасть нельзя, так и должно быть. Но при этом после запуска ничего вообще не работает и ошибок нет.

Однако если сделать как я сказал - все работает, что это?

if(1) - странное выражение. 1 что? 

Все переменные, в том числе странные, инициализируются нулями, поэтому if(0) работает, а if(1) нет. Вполне адекватно. 

 

Ну тут 0 - ложь, а 1 - истина. Когда ставит единицу, начинает работать код внутри условия, а там сравнение числа со строкой, и алерт перестаёт работать.

 
Aleksei Stepanenko:

Ну тут 0 - ложь, а 1 - истина. Когда ставит единицу, начинает работать код внутри условия, а там сравнение числа со строкой, и алерт перестаёт работать.

0 - инициированное значение. В этом суть. 

 
Алексей Тарабанов:

if(1) - странное выражение. 1 что? 

Все переменные, в том числе странные, инициализируются нулями, поэтому if(0) работает, а if(1) нет. Вполне адекватно. 

Это просто была заглушка для условия, у меня там был вызов своей функции, но я для упрощения заменил его на 1/0.


Похоже проблема была действительно в передаче строки в математическую функцию, если передаю число то все работает... пока что)

Я просто привык к слаботипизированным языкам, вобщем большое спасибо всем!

 
Aleksei Stepanenko:

Ну тут 0 - ложь, а 1 - истина. Когда ставит единицу, начинает работать код внутри условия, а там сравнение числа со строкой, и алерт перестаёт работать.

Именно так.