Подробнее
let a = 6, b = 5; if (a => b) { console.log('a is equal to or greater than b'); > let a = 6, b = 5; if (a => b) { console.log('a is ' >
it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,Unsettled Tom,мем,программист
Еще на тему
Один раз это был злобный вирус, влезший в код.
Другой - хватило логики компилятора.
Вот по этому очень много людей не долюбливает динамические языки. Нужно пипец как следить за тем что и куда пишешь. Не то чтобы Java или C# намертво застрахованы от такой фигни, но шансов поменьше.
Строгая типизация не позволит засунуть в if что-то кроме bool. Хотя вспоминая универ, тот же C++ вроде как разрешает подсунуть int. На C# уже только bool, или иди нафиг. Страхует от кучи случаев, кроме сравнения двух буленых переменных. Там уже можно написать лажу в духе if(a = b) и долго вдуплять что не так (радует что современные IDE таки намекнут, при условии что разраб обращает внимание на варнинги).
Если смотреть чуть более шире, то тот факт что всегда нужно соблюдать тип данных, позволяет избегать неверную интерпретацию данных и банальные опечатки. Я бы сравнил это с защитой от дурака, когда разъем чисто физически не подходит и не позволяет воткнуть себя неправильно. Из минусов -- постоянный мапинг данных, явное приведение и кучу другой монотонщины.
Да, чел на скрине немного объедался с написанием:
expression < expression
expression > expression
expression <= expression
expression >= expression
Вместо сравнения чисел объявлена стрелочная функция
В строго типизированных языках, была бы ошибка синтаксиса, из-за попытки использовать переменную "число", как выражение "замыкание" (то бишь функция, да не просто, а которую можно передать в др. ф-цию в качестве аргумента), но для изящного джиэс, это рантайм еррор.
Выражение a => b, аналогичен автовызову (function (a) {return b})(a)
Выражение a => b, аналогично объявлению function (a) {return b}, но никак не автовызову
Ты правильно говоришь, но я про другую часть синтаксиса:
(function(a) {...})(a)
= function(a) {...}
+ (безымянная функция)(аргументы)
И сокращение именно про это
Я не понял откуда взялось (function(a) {...})(a).
a => b из поста будет аналогично a => 5 и тут никаких других подстановок значений не будет.
При чем код из поста работать будет без ошибок и даже "правильно" пока a >= b.
Ну типа:
const f = function (a) { return b; }
И в случае сокращенного синтаксиса, какое выражение аналогично¿:
if (f) {...}
Или:
if (f(a)) {...}
?
Оттуда, что можно проверить существование переменной, а можно вызвать функцию, и проверить результат. ()() - это не сиськи, это вызов!
Почему вдруг if (f(a)) {...}?
В if передается функция как объект и она не выполняется. Функция неявно приводится к bool и равна true.
Ты прав... Я был в полной уверенности, что иф это разворачивает, ан нет
Прости, пидор, это я ( Потому что сначала сделал, а потом проверил. Я исправлюсь