Всегда знал, что javascript — довольно укуренный язык...

Всегда знал, что javascript — довольно укуренный язык и, опечатавшись в ключевом слове var при объявлении переменной, можно словить какую-то непонятную ошибку совершенно в другом месте программы.
Но сегодня я для себя открыл тонкости приведения к логическому значению. Вот этот код:
if ({}) alert(1);
if ({} == true) alert(2);
if ("0") alert(3);
if ("0" == false) alert(4);
выведет 1, зато не выведет 2. Потом он выведет 3, но еще и 4 тоже выведет!
Неужели системы типов понять сложнее, чем все эти принципы автоматических конвертаций? Зачем это вообще поддерживается и развивается?
I always knew that javascript is a rather stoned language and, having sealed up in the var keyword when declaring a variable, you can catch some kind of incomprehensible error in a completely different place in the program.
But today I discovered for myself the subtleties of bringing to a logical value. Here is the code:
if ({}) alert (1);
if ({} == true) alert (2);
if ("0") alert (3);
if ("0" == false) alert (4);
will output 1, but it will not output 2. Then it will output 3, but also 4 will also output!
Is it really harder to understand type systems than all these automatic conversion principles? Why is it generally maintained and developed?
У записи 3 лайков,
0 репостов.
Эту запись оставил(а) на своей стене Алексей Помелов

Понравилось следующим людям