😎
Вот x не понимаю откуда берётся
😎
Ну да
Andrii
Вот x не понимаю откуда берётся
x это параметр функции. getAdder возвращает функцию, которая принимает один параметр x
😎
Кстати к слово есть declaration function, а это expression верно?
Andrii
Кстати к слово есть declaration function, а это expression верно?
Выражение, которое возвращает функцию
Andrii
Можно написать sqr = function (x) { return x*x}
Andrii
В результате sqr буетд функция возведения в квадрат
😎
Выражение, которое возвращает функцию
То есть по итогу вернётся 25?
Andrii
Можно будет потом писать sqr(13)
Andrii
То есть по итогу вернётся 25?
Нет, вернёться функция. Функция это такой же объект в JavaScript.
😎
function getAdder(num) { return function (x) { return num + x; } } a5 = getAdder(5); console.log(a5(2)) Мы вызвали функцию, передали в num параметр 5, дальше вернули function (x) что у нас в x попадает и дальше вернули 5+что то, затем в консоль логе снова вызвали функцию и передали туда 2
😎
Вот рекурсия и замыкание для меня какая то путаница
Andrii
a5 стало теперь a5 = function(x) { return x + 5};
😎
Ладно, я попробую в учебнике посмотреть касаемо этой темы, а касаемо вопроса, когда на реакт можно переходить?
😎
Ещё на сколько сложно понять что такое и как пользоваться препроцессором sass, а также cms
Andrii
Ок, давай что-то более практичное
Andrii
let a = { "x": 12, "y": 23, "z": 42}; let b = { "x": 10, "y": 24, "z": 41}; let c = { "x": 14, "y": 25, "z": 40}; let l = [a, b, c] /* TODO */ l.forEach(function(e){ console.log('>', e.x, e.y, e.z); })
Andrii
Понятно, что делает этот код?
Andrii
Можешь его сразу же запустить
Дима
Никак😏
😎
Вот когда я вижу такое я понимаю что я ничего не понял, ну так Ты создал объект a,b,c у всех их есть проперти x y z, вероятно это фигура и создал массив l. Дальше ты пробежался по массиву , и вызвал функцию и передал какой то event затем консоль лог, а понял ты засунул объекты в массив, про пробежался по нему и через событие эвент консоль лог тебе вывел 3 раза сначала > обьект a потом b потом c , а точнее их свойства
Andrii
Ну... e это сокращение от element
😎
А я слышал что от event
Andrii
Функция forEach принимает другую функцию, которую вызывает для каждого элемента массива
Andrii
А я слышал что от event
Ну... я не пишу на JavaScript, по крайней мере часто. И тут просто взял сокращения. x, y, z просто поля, которые как-то надо было назвать. Можно было age, weight, height
Дима
Но можешь попробовать заняться программированием, и тогда уже решить хочешь ли стать)
Andrii
Ну я понял, не знал что объект может так передаваться
Ну объект, функция это такой же объект
Дима
В идеале, придумать себе задачу
Дима
Автоматизируй что нибудь себе
Andrii
спасибо
let a = { "name": "Alice", "age": 28, "weight": 70}; let b = { "name": "Bob", "age": 24, "weight": 80}; let d = { "name": "Dave", "age": 29, "weight": 60}; let list = [a, b, d] /* TODO */ list.forEach(function(elem){ console.log('>', elem.name, elem.age, elem.weight); })
Andrii
Так понятнее?
Дима
Я вот хочу написать программу, которая будет считать кол-во слов в диалогах в телеге)
Andrii
Создал сайт, значит что-то умеешь... Ну порешай задачки какие-то...
Дима
Софт регающий почту в гугле, иногда бывает нужно накрутить пару почт лично мне
Andrii
Да, с этим пример мне понятно, с первым про замыкание не особо
Хорошо, теперь задача, надо в TODO отсортировать по возрасту. У массива есть метод sort который принимает функцию, которая сравнивает два ключа
Сергей
Я вот хочу написать программу, которая будет считать кол-во слов в диалогах в телеге)
У меня ограничение по словам в месяц, а не по гигабайтам мобильного инета?)))
😎
let a = { "name": "Alice", "age": 28, "weight": 70}; let b = { "name": "Bob", "age": 24, "weight": 80}; let d = { "name": "Dave", "age": 29, "weight": 60}; let list = [a, b, d] /* TODO */ list.forEach(function(elem){ console.log('>', elem.name, elem.age, elem.weight); })
let a = { "name": "Alice", "age": 28, "weight": 70}; let b = { "name": "Bob", "age": 24, "weight": 80}; let d = { "name": "Dave", "age": 29, "weight": 60}; let list = [a, b, d] /* TODO */ list.forEach(function(elem){ console.log('>', elem.age,); }) Просто из консоль лога убираем лишнее? Ну вряд ли это так просто
😎
Хорошо
Andrii
list.sort(function(elem1, elem2){ ..... }); https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
Andrii
Вот надо вставить что-то вместо точек
Andrii
По ссылке есть примеры функций compare
Andrii
Oleg
https://youtube.com/shorts/SAeM8ZyyhvU?feature=share Небольшой совет, с этого чувака я начал
Oleg
Странно кидать это видео в этом чате
😎
Нет, у нас есть TODO, вместо него надо вставить сортировку по возрасту
В общем пошел разбираться с замыканиями, сортировкой. Вот в этих вопросах я чет не готов походу)
😎
До замыкания дело не дошно ещё. Это начатки функциональщины
Хорошо, посоветуй, как поступить? Что в моем случае учить?
Andrii
Хорошо, посоветуй, как поступить? Что в моем случае учить?
Хорошо, что не получается? На чём сейчас затык?
😎
Хорошо, что не получается? На чём сейчас затык?
Ну с замыканием я вроде бы понимаю, ну не понимаю как a5(2) - вот это передается в функцию, если у нее имени нет, то как тогда она вызывается. А с сортировкой я понимаю что нужно использоваться array.sort ну не врубаюсь, у нас в array лежат объекты, я открыл https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/sort, и понял что там я тоже проседаю в знаниях.
😎
вот эти туда-обратно меня и путают, я привык что мы передаем в параметр функции какие то значения, например function sum(a,b){ return a + b } sum(2, 3);
😎
Да, но можно передавать и функции, это тоже значение
Вот когда такое происходит, я потаюсь, в рекурсии тоже эти вызывы функции постоянные, стэк и в нем я путаюсь тоже
Andrii
Хорошо, напиши функцию, которая принимает два элемента и возвращает -1 если первый меньше, +1 если первый больше, и 0 если равны
😎
Там нету рекурсии никакой.
Я к слову, то что для меня непонятно.
Arch
Можете посоветовать платформу или курс для изучения Python?
Andrii
Я к слову, то что для меня непонятно.
function comparePerson(elem1, elem2) { // Напиши сюда код }; console.log(comparePerson(a, b)); // Ожидаем +1 console.log(comparePerson(b, a)); // Ожидаем -1
Arch
stepik, hexlet, udemy,
Спасибо)
Vladislav
кидай
Vladimir
Спасибо)
https://natenka.github.io/schedule/
😎
function comparePerson(elem1, elem2) { // Напиши сюда код }; console.log(comparePerson(a, b)); // Ожидаем +1 console.log(comparePerson(b, a)); // Ожидаем -1
function comparePerson(person1, person2) { if(person1<person2) return -1; else if(person1>person2) return 1; else if(person1==person2) return 0 } console.log(comparePerson(5, 2)) +1 console.log(comparePerson(2, 3)) -1
Vladimir
Даже не сетевым инженерам подойдёт. Курс очень хорош.
Алексей
Не прошёл я собес. Слишком я прямолинейный. Логические задачки решать не умею 😡😭
Andrii
function comparePerson(person1, person2) { if(person1<person2) return -1; else if(person1>person2) return 1; else if(person1==person2) return 0 } console.log(comparePerson(5, 2)) +1 console.log(comparePerson(2, 3)) -1
Вот у нас что a и b let a = { "name": "Alice", "age": 28, "weight": 70}; let b = { "name": "Bob", "age": 24, "weight": 80}; let d = { "name": "Dave", "age": 29, "weight": 60};
Andrii
А не 5 и 2