FakiNyan написав:маю для вас запитання по js, щоб не розслаблялися
що виведе
і
і
і чому?
за багато років роботи з js так і не запам'ятав оці "приколи"
а на друге запитання я маю дві відповіді:
1 -- мови програмування бувають зі статичною (C/C++, Java, Haskell)
та динамічною типізацією (JS, Python, Erlang)
типізація буває слабкою(небезпечною) (C/C++, JS)
чи строгою(сильною, безпечною) (Python, Erlang, Haskell)
у випадку зі строгою статичною типізацією (Haskell)
компілятор не дасть вам скомпілювати функцію,
у якій ви до 2х собак додаєте 7 блох з собаки,
та значення цієї функції підставляється там,
де очікується N апельсинів
компілятор скаже
"Василю, ти тверезий?
блохи (рядок в сумі з собаками (рядок 9)
не дають апельсинів (очікуваних в рядку 13),
я не можу скомпілювати цей код, виправлЄй!"
у випадку зі строгою динамічною типізацією (Erlang)
ми отримаємо помилку(виключення) в рантаймі
> 1 + "1".
** exception error: an error occurred when evaluating an arithmetic expression
in operator +/2
called as 1 + "1"
у випадку зі слабкою(небезпечною) типізацією ми отримуємо:
-- падіння космічних апаратів (не пригадую, як називався, лише причину --
сішний float неявно приводився до int)
тобто, небажані результати
▼NASA про мови програмування (en, ru)
-- неочікувані "отут треба пофіксити, бо я неуважно написав, не перевірив etc"
-- різні "wft code" == що це таке, як приводиться-інтерпретується,
що воно повертає, і взагалі, як воно працює...
imho, з сильною типізацією жити легше,
зі слабкою -- важче
це була 1а відповідь))
2 -- js -- це не добряче продумана та файно спроектована мова програмування (Erlang, Haskell etc),
це "так історично склалось",
це щось з чимось,, недорозуміння, яким малювали сніжинки в браузерах в нульових,
і яке зараз називають топ мовою лише через відсутність альтернатив - інших мов в браузері
тут старі баги називають фічами,
їх не виправляють, а докидують нових ))
-- і ми маємо все важчі веб-сторінки,
все товстіші і прожорливіші браузери...