let a = 6, b = 5; if (a => b) { console.log('a is equal to or greater than b'); > let a = 6, b / it-юмор :: программист :: мем :: Unsettled Tom :: geek (Прикольные гаджеты. Научный, инженерный и айтишный юмор)

it-юмор geek Unsettled Tom мем программист 


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,мем,программист


Подробнее
 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,мем,программист
Еще на тему
Развернуть
if (a >= b) {
Я ловил моменты, когда условие всё-таки нувыпоняли.
Один раз это был злобный вирус, влезший в код.
Другой - хватило логики компилятора.
че это новая спецификация джаваскрипта вышла?

Вот по этому очень много людей не долюбливает динамические языки. Нужно пипец как следить за тем что и куда пишешь. Не то чтобы Java или C# намертво застрахованы от такой фигни, но шансов поменьше.

Немного не понял причем тут димамические языки если насколько я понял вместо >= тут =>, почему в строгих такой проблемы нет?

Строгая типизация не позволит засунуть в if что-то кроме bool. Хотя вспоминая универ, тот же C++ вроде как разрешает подсунуть int. На C# уже только bool, или иди нафиг. Страхует от кучи случаев, кроме сравнения двух буленых переменных. Там уже можно написать лажу в духе if(a = b) и долго вдуплять что не так (радует что современные IDE таки намекнут, при условии что разраб обращает внимание на варнинги).

Если смотреть чуть более шире, то тот факт что всегда нужно соблюдать тип данных, позволяет избегать неверную интерпретацию данных и банальные опечатки. Я бы сравнил это с защитой от дурака, когда разъем чисто физически не подходит и не позволяет воткнуть себя неправильно. Из минусов -- постоянный мапинг данных, явное приведение и кучу другой монотонщины.

Не нужно путать статическую/динамическую типизацию и слабую/сильную (строгую) типизацию. В JS слабая динамическая типизация. В Python, например, типизация тоже динамическая, но строгая, поэтому там есть существенные ограничения на преобразования типов. В C/C++ из твоего примера - слабая стататическая, поэтому если возможно преобразование типа, даже через 100 промежуточных, оно всегда будет выполняться. В C# строгая статическая типизация, но там все равно есть неявное преобразование типов, поэтому засунуть в if можно не только bool, а любой тип, который неявно в него приводится. Неявного преобразования типов разве что в Java нет из тех языков, что на ум приходят.
java сразу пресечет это ошибкой компиляции и в 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.

Ты прав... Я был в полной уверенности, что иф это разворачивает, ан нет

Спасибо за объяснение. Я дважды неправильно понял прикол, пока не прочитал твои комментарии. Интересно, за что тебя здесь заминусили.
JS ненавистники наверное

Прости, пидор, это я ( Потому что сначала сделал, а потом проверил. Я исправлюсь

Ну и что тут смешного, где смеяться ?
Просто посмотри короткое пояснительное видео.
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
ЧЕРЧИЛЛЬ ЛЕНИН

КУРИЛ	НЕ КУРИТ

УМЕР ВСЕГДА ЖИВОЙ

НЕ KWIL
подробнее»

политота,Приколы про политику и политиков Бред курение

ЧЕРЧИЛЛЬ ЛЕНИН КУРИЛ НЕ КУРИТ УМЕР ВСЕГДА ЖИВОЙ НЕ KWIL