Огосподи! Это прекрасно было! Огромное спасибо! Уже которое видео смотрю и ни черта не въезжаю, что значит return. Теперь дошло :) Ещё раз огромное спасибо! Я впечатлена!
Отличное объяснение, после видео действительно понятно, ибо на курсах, никто не пишет, что зачем, как и для чего, не приводят примеры на реальной жизни, а просто приводят пример кода и слава богу, что есть такие люди, которую дополнят эти курсы своим объяснением и ты сможешь двигаться дальше
Отлично! Концепция простая. Если смотреть на работу функции издалека, то она либо что-то "ДЕЛАЕТ", либо что-то "ВОЗВРАЩАЕТ". Функции объявляют именно для этого. --- Всё остальное - это примочки для отладки кода, ветвления или итерирования.
Не слушайте критиканов. Их самих попроси что-то объяснить и они, какие они не будь профессионалы, в большинстве своём сливаются. Нальют воды, обязательно выпятят себя, а тема останется не раскрыта. Думаю, что умение объяснить доходчиво - это способность человека. Она или есть или её нет. Конечно, тема взята очень простая, но само видео, как образец понятного и исчерпывающего объяснения заслуживает благодарности. Начинающему самое оно, один раз и на всю жизнь останется понятно.
Добрый день Сергей! Благодарю Вас за добрые слова. Рад, что видеоролик находит положительный отклик. Значит моё время, а также время многих зрителей было потрачено с пользой. Хорошего Вам дня, мира и благополучия!
Было в рекомендациях, думаю просмотров мало, канал какой-то…а в итоге классное объяснения и примеры и подача, продолжай в том же духе!! У тебя классно получается 👍👍👍однозначно лайк подписка
Леонид, спасибо что посмотрели! Оператор return имеет несколько применений в среде выполнения кода. Но в большинстве случаев он нужен для общения одной функции с другой.
Пожалуйста! Рад что помог. Идея простая, нужно её один раз понять. В других языках это +/- тоже самое. --- Функции возвращают "что-то" для того, чтобы получить трансформированный (преобразованный) результат и уже дальше с ним работать.
Люди хорошо запоминают информацию, когда объясняешь на обычном "человечьем" языке без заумных фраз и словосочетаний. Я много раз делал устные попытки объяснить людям что такое return. В итоге опытным путём нашёл на мой взгляд самое удачное объяснение этой концепции и изложил в видеоролике. Ну и конечно попутно затронул тему "Внезапного Завершения", чтобы было ясно где живёт return и какие у него есть "братья" и "сёстры".
Доброго дня, спасибо за просмотр! На канале есть видео - "Функция возвращает Функцию". Это то что вам нужно. Вы сможете увидеть как замыкаются переменные в телах функций и узнаете как ими управлять снаружи. Именно так работаю классы в JavaScript.
Скажи пожалуйста, что такое "отладчик", как им пользоваться и есть ли от в бесплатной версии IDEA ? Благодарю! \\ Очень понятное обьяснение с аналогиями. Благодарю!
Приветствую! Отладчик точно есть в большинстве браузеров. Суть его работы - это пошаговое выполнение операций. Но отладчику нужна "Среда Выполнения Кода". Если в вашем редакторе есть такая среда для JavaScript, то отладчик будет работать в редакторе. Для PHP своя, для Python своя .... и так далее. Обычно вы сразу видите итоговый результат работы той или иной функции (кода) в консоли браузера. С отладчиком вы можете написать какой-то код (с циклом, например) и "прощёлкивать" его в отладчике шаг за шагом. Каждый шаг будет отображать состояния переменных и результирующие значения. Это для кода, в котором вы сомневаетесь или не вы его писали. Если вы сами пишете свой проект, то в каждую функцию будете закладывать условия "проверок данных", "перехват ошибок" и "отброс исключений". Грубо говоря с "защитой от дурака". А информационные сообщения об ошибках будете формулировать как вам удобно. И так будете лучше понимать какие данные не туда пошли. В видео я для примера показал, что СРЕДА знает о наших переданных значениях, но ничего толкового с ними не происходит. Чтобы визуально было понятнее. Спасибо за просмотр!
А есть группа в телеге? Что бы можно было общаться кто познает js ? Я бы по общался и с теми кто только учится... У меня есть скилы в CSS и HTML сейчас познаю js
Добрый день! Вы правы. Мы не изменяем значения переменных, нужно говорить "складываем". Некорректно выразился в видео. Надеюсь, что этот нюанс не отразится на понимании словосочетания "Функция возвращает", для чего и создавалось это видео.
Функция "возвращает" только когда её вызывают с круглыми скобками. Но перед этим функция должна быть "объявлена в среде выполнения кода", чтобы "среда" знала что вызывать.
не совсем понятно следующее sumAB(sumAB(1,2), sumAB(3,4)) - выше по коду видно, что "sumAB(a, b) - это сумма a и b. Возникает вопрос, мы указали, что a - это 1, а потом указываем, что a - это 3, почему нет противоречий? как a может быть и 1 и 3 одновременно? Далее sumAB - указали, что сложение a и b, в итоге видится это следующим образом - "сумма a и b" - это "сумма a и b" + "сумма a и b". Мне не понятна логика, почему "a" может быть и 1 и 3? и почему именно такое построение? Разве это не запутывает? Было бы логичнее, если было бы так, sumABXC(sumAB(1,2),sumXC(3,4) - тогда уже реально логичнее получается ведь? И нет никакой путаницы. Почему именно такой пример правильный? Объясните пожалуйста, просто не понимаю логики, как код сам в себе не путается, когда одна и та же "a" - имеет несколько значений...
Добрый день Kane Solo! У вас очень правильный вопрос. И это очень хорошо, что вы его задали. Значит вы уже очень близки к пониманию смысла идеи функций. Постараюсь объяснить разницу между моим и вашим примером. Скорее всего сейчас вы ещё не знаете тот факт, что ПАРАМЕТРЫ вызванной функции изолированы друг от друга и работают только в той функции, в которой они ВЫЗВАНЫ. Это значит, что 1 и 3 не видят друг друга, также как и 2 и 4. Они живут только в своих вызванных функциях и не выходят за её пределы видимости. Функции вычисляются последовательно, поэтому противоречий не будет. Когда мы ОБЪЯВЛЯЕМ функцию, и в качестве шаблона указываем "a" и "b", то они являются АРГУМЕНТАМИ этой ОБЪЯВЛЕННОЙ функции. Объявление - это просто инструкция. Если мы 100 раз ВЫЗОВЕМ одну и ту же функцию с разными ПАРАМЕТРАМИ, то в АРГУМЕНТЫ подставятся значения из разных ПАРАМЕТРОВ ... и эти значения будут изолированными. --- Представьте, что вам нужно купить молоко. Что изменится в процессе покупки молока если зайдёте в Пятёрочку или в Магнит или в местный ларёк? Ничего. Алгоритм поиска молока будет одинаковым - открыть дверь магазина, покрутить головой, посмотреть глазами, найти молоко... если молока нет сделать 10 шагов глубже в магазин и снова крутить головой и смотреть глазами... и так далее пока молоко не будет найдено. Меняться будет только географическое место магазина с молоком, размер здания и лицо кассира. Всё. В вашем примере с функцией sumABXC() вы по сути создаёте 3 одинаковые по алгоритму функции. То есть в вашем коде появляются 3 функции, которые ДЕЛАЮТ ОДНО и ТОЖЕ. Они отличаются только названием. Получается, что вы сами для себя создаёте проблему. Если вы захотите поменять логику работы функции, то вам придётся менять алгоритм внутри ВСЕХ ТРЁХ функций так как они делают одно и тоже. А если вы где-то забудете поменять? Как думаете что произойдёт? Сможете потом найти ошибку? Вот в этом и проблема - ИЗБЫТОЧНОСТЬ ОДИНАКОВОГО КОДА. В программировании стараются создавать такие функции, которые умеют решать только одну задачу. Из простых функций можно написать функцию посложнее. Но идея заключается именно в разложении одной большой сложной задачи на несколько маленьких. В моём примере ОБЪЯВЛЕНА всего ОДНА функция, которая умеет делать сложение двух чисел. Далее я делаю вызов sumAB(), где в качестве ПАРАМЕТРОВ передаю ВЫЗОВЫ двух других функций - sumAB(1,2) и sumAB(3,4). Зачем я это делаю? Я хочу вычислить ПАРАМЕТРЫ. У меня их нет в готовом виде. Я демонстрирую пример ВОЗВРАТА ЗНАЧЕНИЯ из функции: Первый параметр вычислится из sumAB(1,2) и станет равным 3. Второй параметр вычислится из sumAB(3,4) и станет равным 7. И только после этого начнёт выполнение третья функция (внешняя), куда подставятся 3 и 7. Условно это выглядит так sumAB(3,7). И только после этого мы получим 10. Так вот идея видео в том, что если бы функция sumAB() не возвращала бы ничего, то мы ничего бы и не получили ... ни при вычислении значений параметров ... ни при вызове внешней функции. Вы просто ещё не видели такой формат записи кода, поэтому вам НА ГЛАЗ это непривычно. Но синтаксически вы можете писать очень сложные ВЫРАЖЕНИЯ и в работе вам скорее всего придётся это делать. Чем больше вы видите синтаксических конструкций, тем легче вам будет читать код ... ну и писать тоже. Спасибо, что посмотрели!
@@ЕфимРябов Становится более менее понятно, а можно ли где-то ознакомиться с логикой самого яваскрипта? Просто не хочется это как-то заучивать, а хочется понять логику в целом, к примеру как - всегда сначала задаются переменные, потом уже функции, что логично, функция не может существовать без переменной, т.к. функция создана для того, чтобы работать с переменными - (что-то в этом роде, но чтобы именно вот логика всего языка была как с той же "sumAB". Или такое вряд ли есть?
В своё время я искал подобную "человеческую" документацию по JavaScript на русском языке, но так и не смог найти. Нет такого одного ресурса, который мог бы грамотно ответить на основные вопросы для новичка. Проще всего брать одну тему и пытаться изучить её от начала и до конца (ну или до момента, когда можно приступать к другой теме). Для этого придётся самостоятельно собирать информацию из разных источников. Источников много. Есть официальная документация по стандарту ECMAScript - tc39.es/ecma262/ ECMAScript - это стандарт по которому работает сам JavaScript и NodeJS. Документация на английском языке и как любая техническая документация, она "очень суховата" для обычного пользователя, хотя внутри всё описано очень грамотно, если пытаться разобраться в устройстве языка. В ней можно понять многие вещи. Если смотреть на это со стороны разработки, то JavaScript - это клиентский (фронтендный) ECMAScript, а NodeJS - это серверный (бэкэндный) ECMAScript. Других вариантов нет. Язык ECMAScript постоянно развивается. Появляются новые элементы в языке. Уследить за всем очень трудно т. к. кроме JavaScript нужно знать кучу всего остального, которое также стремительно развивается. Вы легли спать, а на утро уже 100 изменений в IT-сфере, которой вы касаетесь. Но есть вещи в языке, которые не меняются уже 20 лет. Это массивы, объекты, функции, строки, числа и тому подобное. Лучше начать с них, а потом изучать прикладные интерфейсы программирования (API).
Добрый день Татьяна! Спасибо, что посмотрели. Если вы имеете ввиду всплывающее окошко в браузере с каким-то текстом и кнопочкой "ОК", то это не return. Это не имеет прямого отношения к JavaScript и понятию "Функция Возвращает". Попробуйте написать своими руками функцию сложения двух чисел, как в видео. Всегда держите в голове, что браузер - это программа "рисовалка". История с окошком является частью прикладного интерфейса программирования, который реализован в браузере для глобального объекта JavaScript, этим объектом является объект Window. Вы можете ознакомиться с интерфейсом по ссылке: html.spec.whatwg.org/multipage/timers-and-user-prompts.html#simple-dialogs Метод alert() ОТОБРАЖАЕТ модальное предупреждение с заданным сообщением и ожидает, пока пользователь его закроет. Если по простому, то это попытка ГРАФИЧЕСКИ уведомить посетителя сайта о чём-то. Языку JavaScript (как и любому другому языку программирования) для вычислений вообще не нужно отображать результаты. Все языки программирования изначально "безголовые" - то есть "без мониторные". Для их работы нужен только ПК и среда выполнения кода в операционной системе. И всё. Если вы сейчас отключите свой монитор от своего компьютера, то ..... то ничего не случится - компьютер не выключится. )) Когда вы обратно подключите монитор, то всё будет на своих местах. Консоль в браузере, как и alert(), нужны только для того, чтобы УВИДЕТЬ ЧЕЛОВЕЧЕСКИМ ГЛАЗОМ ход выполнения команд и алгоритмов. Вам как разработчику нужно понимать, верно работает алгоритм или нет. Самому же JavaScript плевать на отображение информации - он либо работает и выполняется в оперативной памяти, либо падает в ошибку. Как-то так.
@@ЕфимРябов правильно я понимаю, что если человек введет в prompt например свой email, то alert это покажет, но не сохранит в системе? И чтобы адрес сохранился в системе надо return? Или я ошибаюсь?
почему нельзя проще обьяснить как именно в проекте используется этот return, например на сайте онлайн заказа товаров, куда понятней понять было бы для чего он нужен
Добрый день Денис! Спасибо, что посмотрели! --- Что я думаю? Объяснить "на сайте онлайн заказа товаров" новичку понятие "return" вообще нереально. :-) Понятие "функция возвращает" - это фундаментальный кирпичек, на котором основано всё ваше дальнейшее понимание процессов в языке. Без него вы не поймёте: Зачем нужны функции?; Как функции вызывают друг друга?; А главное зачем они это делают? Как функции передаются друг другу?; И зачем это нужно? Что такое callback-функция? Как использовать функции в виде свойств объекта?; Что такое геттеры и сеттеры? Чем отличается функция от метода?; Почему это важно? Как это влияет на написание кода? Что такое объект контекста выполнения функции?; Как методы наследуются экземплярами (объектами) класса?; Как строятся экземпляры класса?; Что такое функция constructor в классе?; Сколько существует встроенных классов в само ядро JavaScript?; Какие методы есть у встроенных классов? Какие у конструкторов? Какие у экземпляров? Сколько существует внешних классов под JavaScript?; Сколько существует сред выполнения кода для языка JavaScript?; ...цепочка длинная Подход в изучении только один - "от простого к сложному". Настоящие проекты используют огромное количество прикладных интерфейсов программирования, библиотек и языков. У всех них своя логика работы (алгоритмы). Все эти технологии связываются друг с другом и переливают данные из одного места в другое. Настоящие проекты используют очень много классов и абстракций, которые невозможно понять за 10 минут. Их тупо нужно заучивать и понимать, чтобы не писать свой "велосипед". В архитектуре "КЛИЕНТ/СЕРВЕР" нельзя просто так взять и вернуть данные по сети. Практически все JS-проекты будут использовать событийное программирование и структурированные данные (которые нужно готовить). Это накладывает на код очень много синтаксических "обвязок", которые просто отпугнут от программирования любого человека. )) Я понимаю, что у разных людей, разное восприятие окружающего мира. К сожалению, не могу предложить альтернативного объяснения понятия "функция возвращает". Если вы сможете отыскать на просторах интернета подходящее для вас объяснение, то напишите ссылку в комментарии под этим видео. Так вы поможете другим людям лучше понять идею возвращаемых значений из функций. Если вам ближе тема интернет-магазина, то попробуйте открыть любую страницу сайта у любого магазина и в консоли браузера получить массив из цен на товары, которые имеются на этой странице. Решая эту задачу, вы очень быстро поймёте, что такое return и зачем он нужен в функциях, которые являются методами. Когда вы напишете свою первую "цепочку" вызовов методов через точки, то поймёте зачем их оборачивают в функции с return'ами.
Можно сказать и так. Идея ВОЗВРАТА в том, чтобы как-то модифицировать объект и передать его куда-то дальше. Для удобства можно представлять себе конвейерную ленту на заводе. (кинули кусок металла, расплющили, округлили, заточили, воткнули палку == получилась лопата). Если чуть чуть меняем функции на пути ленты, то можем перенастроить на производство граблей, вил или тяпок. Суть примерно такая. Я бы назвал это способом "невидимого общения" функций между собой.
Когда вы находитесь в самой консоли БРАУЗЕРА (на вкладке "Console") и пишете код именно в ней, то вы можете сразу обратиться в нужной вам переменной или функции по её идентификатору привязки (по имени). В этом случае можно не писать обращение console.log() т.к. вы уже в нужной "среде выполнения". Браузеры работающие на движке Chrome дают такую возможность. Но если вы пишете в редакторе код, который затем будет исполняться в "среде выполнения" БРАУЗЕРА, то вам просто необходимо заключать нужные переменные в console.log(), чтобы затем увидеть уведомление в консоли браузера. --- Важно различать то место, где ваш код выполняется. Например, на сервере NodeJS работает своя консоль - она менее привлекательна, чем клиентская. Я привожу примеры в клиентской консоли, чтобы мои зрители видели саму суть решения задачи (без лишних объектов и методов, которые могут запутать).
Автор тянет интонацию, как будто болен, тема видео вообще высосана из пальца... Ну и стоит отметить слоупоков ниже: "Эээ спасибо, я дура не понимать, а Ваш видео моя сделать умный..."
Огосподи! Это прекрасно было! Огромное спасибо! Уже которое видео смотрю и ни черта не въезжаю, что значит return. Теперь дошло :) Ещё раз огромное спасибо! Я впечатлена!
Спасибо, что посмотрели!
Спасибо. Наконец-то услышал нормальное и понятное объяснение.
Спасибо! Очень хорошее и доступное объяснение!
Добрый день RomBier! Благодарю за обратную связь. Спасибо что посмотрели.
комментарий в поддержку автора канала
Ну что сказать : ) было бы интересно послушать про асинк эвейт в подобном стиле! Отличный контент!
Отличное объяснение, после видео действительно понятно, ибо на курсах, никто не пишет, что зачем, как и для чего, не приводят примеры на реальной жизни, а просто приводят пример кода и слава богу, что есть такие люди, которую дополнят эти курсы своим объяснением и ты сможешь двигаться дальше
спасибо, очень понятное объяснение
Мне объяснили это 3ое) человек!) Только с твоего видоса понял)
Спасибо
Отлично! Рад, что помог. Благодарю за просмотр!
Огромное вам спасибо, наконец-то понял
Отлично объяснил. Продолжай делать такие уроки.
Шииииииикарно)
Мужик респект тебе, я наконец понял когда return нужен, а когда нет, спасибо.
Отлично! Спасибо что посмотрели.
Теперь понятно стало наконец! Спасибо! Продолжайте
Отлично! Концепция простая. Если смотреть на работу функции издалека, то она либо что-то "ДЕЛАЕТ", либо что-то "ВОЗВРАЩАЕТ". Функции объявляют именно для этого. --- Всё остальное - это примочки для отладки кода, ветвления или итерирования.
Спасибо!
Благодарю!
очень простое и понятное объяснение. Спасибо Вам большое!
Благодарю вас Алексей! Наложил скучные описания спецификаций на нашу с вами реальность.
шедевр ) я не представлял лучшего ответа)) вроде на коленках, но это великолепно)
Благодарю за просмотр!
Спасибо, всё понятно
DAN, спасибо! Старался )
Gratitude to the author! The most understandable explanation I've ever heard
Просто и понятно,Лайк.
Благодарю! Хорошего дня.
Спасибо! Очень доходчиво и понятно!)
Не слушайте критиканов. Их самих попроси что-то объяснить и они, какие они не будь профессионалы, в большинстве своём сливаются. Нальют воды, обязательно выпятят себя, а тема останется не раскрыта. Думаю, что умение объяснить доходчиво - это способность человека. Она или есть или её нет. Конечно, тема взята очень простая, но само видео, как образец понятного и исчерпывающего объяснения заслуживает благодарности. Начинающему самое оно, один раз и на всю жизнь останется понятно.
Добрый день Сергей! Благодарю Вас за добрые слова. Рад, что видеоролик находит положительный отклик. Значит моё время, а также время многих зрителей было потрачено с пользой. Хорошего Вам дня, мира и благополучия!
хорошо объяснил.
Благодарю за просмотр!
Спасибо, что рассказал доступно, как это делается. Лайк за видео)
Спасибо, что посмотрели!
Спасибо! помог понять
Спасибо за просмотр! Рад, что помог с этим вопросом.
Было в рекомендациях, думаю просмотров мало, канал какой-то…а в итоге классное объяснения и примеры и подача, продолжай в том же духе!! У тебя классно получается 👍👍👍однозначно лайк подписка
Леонид, спасибо что посмотрели! Оператор return имеет несколько применений в среде выполнения кода. Но в большинстве случаев он нужен для общения одной функции с другой.
Тебя приятно смотреть) я подписался ;)
Спасибо, что посмотрели! Хорошего дня!
Спасибо за понятное разъяснение))))) А то я уже голову сломала вопросом, что там ф-ция возвращает? Зачем она что-то возвращает? :)
Пожалуйста! Рад что помог. Идея простая, нужно её один раз понять. В других языках это +/- тоже самое. --- Функции возвращают "что-то" для того, чтобы получить трансформированный (преобразованный) результат и уже дальше с ним работать.
божественен
Спасибо за объяснение
Вам спасибо, что посмотрели! Хорошего дня.
спасибо! мне помогло!
Георгий, отлично! Спасибо за просмотр.
Спасибо
Спасибо, что посмотрели!
круто, спасибо вам
Спясибя
Пжялустя
разжевал!спасибо
Благодарю! Согласитесь всё просто. :-) А то порой как начнёшь смотреть видео без человеческих примеров, так и забросить хочется.
Лайк
"ртом возвращать" - ну, я очень смеялся в этот момент.
Люди хорошо запоминают информацию, когда объясняешь на обычном "человечьем" языке без заумных фраз и словосочетаний. Я много раз делал устные попытки объяснить людям что такое return. В итоге опытным путём нашёл на мой взгляд самое удачное объяснение этой концепции и изложил в видеоролике. Ну и конечно попутно затронул тему "Внезапного Завершения", чтобы было ясно где живёт return и какие у него есть "братья" и "сёстры".
Можно вот так же про замыкания?
Доброго дня, спасибо за просмотр! На канале есть видео - "Функция возвращает Функцию". Это то что вам нужно. Вы сможете увидеть как замыкаются переменные в телах функций и узнаете как ими управлять снаружи. Именно так работаю классы в JavaScript.
return всегда возвращае значение но только не из функции onclick
Скажи пожалуйста, что такое "отладчик", как им пользоваться и есть ли от в бесплатной версии IDEA ? Благодарю! \\ Очень понятное обьяснение с аналогиями. Благодарю!
Приветствую! Отладчик точно есть в большинстве браузеров. Суть его работы - это пошаговое выполнение операций. Но отладчику нужна "Среда Выполнения Кода". Если в вашем редакторе есть такая среда для JavaScript, то отладчик будет работать в редакторе. Для PHP своя, для Python своя .... и так далее.
Обычно вы сразу видите итоговый результат работы той или иной функции (кода) в консоли браузера. С отладчиком вы можете написать какой-то код (с циклом, например) и "прощёлкивать" его в отладчике шаг за шагом. Каждый шаг будет отображать состояния переменных и результирующие значения. Это для кода, в котором вы сомневаетесь или не вы его писали.
Если вы сами пишете свой проект, то в каждую функцию будете закладывать условия "проверок данных", "перехват ошибок" и "отброс исключений". Грубо говоря с "защитой от дурака". А информационные сообщения об ошибках будете формулировать как вам удобно. И так будете лучше понимать какие данные не туда пошли.
В видео я для примера показал, что СРЕДА знает о наших переданных значениях, но ничего толкового с ними не происходит. Чтобы визуально было понятнее.
Спасибо за просмотр!
Почему нельзя использовать словосочетание : "Отображение результата", а то получается , как на "горячее" говорить "тяжелое"
А есть группа в телеге? Что бы можно было общаться кто познает js ? Я бы по общался и с теми кто только учится... У меня есть скилы в CSS и HTML сейчас познаю js
Мы к А не прибавляем Б, а складываем А с Б, для прибавления к переменной значение другой переменной используется +=
Добрый день! Вы правы. Мы не изменяем значения переменных, нужно говорить "складываем". Некорректно выразился в видео. Надеюсь, что этот нюанс не отразится на понимании словосочетания "Функция возвращает", для чего и создавалось это видео.
additional operator (+) - оператор сложения
additional assignment operator (+=) - оператор сложения с *присвоением* : )
0:01 почему у меня ничего не возвращает?
Функция "возвращает" только когда её вызывают с круглыми скобками. Но перед этим функция должна быть "объявлена в среде выполнения кода", чтобы "среда" знала что вызывать.
@@ЕфимРябов я знаю что нужно написать ее название и скобки. Но у меня даже после этого не работает
@@ЕфимРябов а как ее объявить
@@ЕфимРябов у меня не работает return.
var a = function(a, b) {return a + b}
a(2, 2)
Это у меня не работает
Тогда у меня такие вопросы. А где вы это пишите? Куда вводите команды? Какой браузер у вас?
не совсем понятно следующее sumAB(sumAB(1,2), sumAB(3,4)) - выше по коду видно, что "sumAB(a, b) - это сумма a и b. Возникает вопрос, мы указали, что a - это 1, а потом указываем, что a - это 3, почему нет противоречий? как a может быть и 1 и 3 одновременно? Далее sumAB - указали, что сложение a и b, в итоге видится это следующим образом - "сумма a и b" - это "сумма a и b" + "сумма a и b". Мне не понятна логика, почему "a" может быть и 1 и 3? и почему именно такое построение? Разве это не запутывает?
Было бы логичнее, если было бы так, sumABXC(sumAB(1,2),sumXC(3,4) - тогда уже реально логичнее получается ведь? И нет никакой путаницы. Почему именно такой пример правильный? Объясните пожалуйста, просто не понимаю логики, как код сам в себе не путается, когда одна и та же "a" - имеет несколько значений...
Добрый день Kane Solo! У вас очень правильный вопрос. И это очень хорошо, что вы его задали. Значит вы уже очень близки к пониманию смысла идеи функций. Постараюсь объяснить разницу между моим и вашим примером.
Скорее всего сейчас вы ещё не знаете тот факт, что ПАРАМЕТРЫ вызванной функции изолированы друг от друга и работают только в той функции, в которой они ВЫЗВАНЫ. Это значит, что 1 и 3 не видят друг друга, также как и 2 и 4. Они живут только в своих вызванных функциях и не выходят за её пределы видимости. Функции вычисляются последовательно, поэтому противоречий не будет.
Когда мы ОБЪЯВЛЯЕМ функцию, и в качестве шаблона указываем "a" и "b", то они являются АРГУМЕНТАМИ этой ОБЪЯВЛЕННОЙ функции. Объявление - это просто инструкция.
Если мы 100 раз ВЫЗОВЕМ одну и ту же функцию с разными ПАРАМЕТРАМИ, то в АРГУМЕНТЫ подставятся значения из разных ПАРАМЕТРОВ ... и эти значения будут изолированными. --- Представьте, что вам нужно купить молоко. Что изменится в процессе покупки молока если зайдёте в Пятёрочку или в Магнит или в местный ларёк? Ничего. Алгоритм поиска молока будет одинаковым - открыть дверь магазина, покрутить головой, посмотреть глазами, найти молоко... если молока нет сделать 10 шагов глубже в магазин и снова крутить головой и смотреть глазами... и так далее пока молоко не будет найдено. Меняться будет только географическое место магазина с молоком, размер здания и лицо кассира. Всё.
В вашем примере с функцией sumABXC() вы по сути создаёте 3 одинаковые по алгоритму функции. То есть в вашем коде появляются 3 функции, которые ДЕЛАЮТ ОДНО и ТОЖЕ. Они отличаются только названием. Получается, что вы сами для себя создаёте проблему. Если вы захотите поменять логику работы функции, то вам придётся менять алгоритм внутри ВСЕХ ТРЁХ функций так как они делают одно и тоже. А если вы где-то забудете поменять? Как думаете что произойдёт? Сможете потом найти ошибку? Вот в этом и проблема - ИЗБЫТОЧНОСТЬ ОДИНАКОВОГО КОДА.
В программировании стараются создавать такие функции, которые умеют решать только одну задачу. Из простых функций можно написать функцию посложнее. Но идея заключается именно в разложении одной большой сложной задачи на несколько маленьких.
В моём примере ОБЪЯВЛЕНА всего ОДНА функция, которая умеет делать сложение двух чисел. Далее я делаю вызов sumAB(), где в качестве ПАРАМЕТРОВ передаю ВЫЗОВЫ двух других функций - sumAB(1,2) и sumAB(3,4). Зачем я это делаю? Я хочу вычислить ПАРАМЕТРЫ. У меня их нет в готовом виде. Я демонстрирую пример ВОЗВРАТА ЗНАЧЕНИЯ из функции:
Первый параметр вычислится из sumAB(1,2) и станет равным 3.
Второй параметр вычислится из sumAB(3,4) и станет равным 7.
И только после этого начнёт выполнение третья функция (внешняя), куда подставятся 3 и 7. Условно это выглядит так sumAB(3,7). И только после этого мы получим 10.
Так вот идея видео в том, что если бы функция sumAB() не возвращала бы ничего, то мы ничего бы и не получили ... ни при вычислении значений параметров ... ни при вызове внешней функции.
Вы просто ещё не видели такой формат записи кода, поэтому вам НА ГЛАЗ это непривычно. Но синтаксически вы можете писать очень сложные ВЫРАЖЕНИЯ и в работе вам скорее всего придётся это делать. Чем больше вы видите синтаксических конструкций, тем легче вам будет читать код ... ну и писать тоже.
Спасибо, что посмотрели!
@@ЕфимРябов Становится более менее понятно, а можно ли где-то ознакомиться с логикой самого яваскрипта? Просто не хочется это как-то заучивать, а хочется понять логику в целом, к примеру как - всегда сначала задаются переменные, потом уже функции, что логично, функция не может существовать без переменной, т.к. функция создана для того, чтобы работать с переменными - (что-то в этом роде, но чтобы именно вот логика всего языка была как с той же "sumAB". Или такое вряд ли есть?
В своё время я искал подобную "человеческую" документацию по JavaScript на русском языке, но так и не смог найти. Нет такого одного ресурса, который мог бы грамотно ответить на основные вопросы для новичка. Проще всего брать одну тему и пытаться изучить её от начала и до конца (ну или до момента, когда можно приступать к другой теме). Для этого придётся самостоятельно собирать информацию из разных источников. Источников много.
Есть официальная документация по стандарту ECMAScript - tc39.es/ecma262/
ECMAScript - это стандарт по которому работает сам JavaScript и NodeJS. Документация на английском языке и как любая техническая документация, она "очень суховата" для обычного пользователя, хотя внутри всё описано очень грамотно, если пытаться разобраться в устройстве языка. В ней можно понять многие вещи.
Если смотреть на это со стороны разработки, то JavaScript - это клиентский (фронтендный) ECMAScript, а NodeJS - это серверный (бэкэндный) ECMAScript. Других вариантов нет.
Язык ECMAScript постоянно развивается. Появляются новые элементы в языке. Уследить за всем очень трудно т. к. кроме JavaScript нужно знать кучу всего остального, которое также стремительно развивается. Вы легли спать, а на утро уже 100 изменений в IT-сфере, которой вы касаетесь.
Но есть вещи в языке, которые не меняются уже 20 лет. Это массивы, объекты, функции, строки, числа и тому подобное. Лучше начать с них, а потом изучать прикладные интерфейсы программирования (API).
А разве alert не возвращает "ртом" свои значения? Чем он плох?
Добрый день Татьяна! Спасибо, что посмотрели.
Если вы имеете ввиду всплывающее окошко в браузере с каким-то текстом и кнопочкой "ОК", то это не return. Это не имеет прямого отношения к JavaScript и понятию "Функция Возвращает". Попробуйте написать своими руками функцию сложения двух чисел, как в видео. Всегда держите в голове, что браузер - это программа "рисовалка".
История с окошком является частью прикладного интерфейса программирования, который реализован в браузере для глобального объекта JavaScript, этим объектом является объект Window.
Вы можете ознакомиться с интерфейсом по ссылке: html.spec.whatwg.org/multipage/timers-and-user-prompts.html#simple-dialogs
Метод alert() ОТОБРАЖАЕТ модальное предупреждение с заданным сообщением и ожидает, пока пользователь его закроет. Если по простому, то это попытка ГРАФИЧЕСКИ уведомить посетителя сайта о чём-то.
Языку JavaScript (как и любому другому языку программирования) для вычислений вообще не нужно отображать результаты. Все языки программирования изначально "безголовые" - то есть "без мониторные". Для их работы нужен только ПК и среда выполнения кода в операционной системе. И всё. Если вы сейчас отключите свой монитор от своего компьютера, то ..... то ничего не случится - компьютер не выключится. )) Когда вы обратно подключите монитор, то всё будет на своих местах.
Консоль в браузере, как и alert(), нужны только для того, чтобы УВИДЕТЬ ЧЕЛОВЕЧЕСКИМ ГЛАЗОМ ход выполнения команд и алгоритмов. Вам как разработчику нужно понимать, верно работает алгоритм или нет. Самому же JavaScript плевать на отображение информации - он либо работает и выполняется в оперативной памяти, либо падает в ошибку.
Как-то так.
@@ЕфимРябов правильно я понимаю, что если человек введет в prompt например свой email, то alert это покажет, но не сохранит в системе? И чтобы адрес сохранился в системе надо return? Или я ошибаюсь?
почему нельзя проще обьяснить как именно в проекте используется этот return, например на сайте онлайн заказа товаров, куда понятней понять было бы для чего он нужен
Добрый день Денис! Спасибо, что посмотрели! --- Что я думаю? Объяснить "на сайте онлайн заказа товаров" новичку понятие "return" вообще нереально. :-)
Понятие "функция возвращает" - это фундаментальный кирпичек, на котором основано всё ваше дальнейшее понимание процессов в языке. Без него вы не поймёте:
Зачем нужны функции?;
Как функции вызывают друг друга?; А главное зачем они это делают?
Как функции передаются друг другу?; И зачем это нужно? Что такое callback-функция?
Как использовать функции в виде свойств объекта?; Что такое геттеры и сеттеры?
Чем отличается функция от метода?; Почему это важно? Как это влияет на написание кода?
Что такое объект контекста выполнения функции?;
Как методы наследуются экземплярами (объектами) класса?;
Как строятся экземпляры класса?;
Что такое функция constructor в классе?;
Сколько существует встроенных классов в само ядро JavaScript?;
Какие методы есть у встроенных классов? Какие у конструкторов? Какие у экземпляров?
Сколько существует внешних классов под JavaScript?;
Сколько существует сред выполнения кода для языка JavaScript?;
...цепочка длинная
Подход в изучении только один - "от простого к сложному".
Настоящие проекты используют огромное количество прикладных интерфейсов программирования, библиотек и языков. У всех них своя логика работы (алгоритмы). Все эти технологии связываются друг с другом и переливают данные из одного места в другое.
Настоящие проекты используют очень много классов и абстракций, которые невозможно понять за 10 минут. Их тупо нужно заучивать и понимать, чтобы не писать свой "велосипед".
В архитектуре "КЛИЕНТ/СЕРВЕР" нельзя просто так взять и вернуть данные по сети. Практически все JS-проекты будут использовать событийное программирование и структурированные данные (которые нужно готовить). Это накладывает на код очень много синтаксических "обвязок", которые просто отпугнут от программирования любого человека. ))
Я понимаю, что у разных людей, разное восприятие окружающего мира. К сожалению, не могу предложить альтернативного объяснения понятия "функция возвращает". Если вы сможете отыскать на просторах интернета подходящее для вас объяснение, то напишите ссылку в комментарии под этим видео. Так вы поможете другим людям лучше понять идею возвращаемых значений из функций.
Если вам ближе тема интернет-магазина, то попробуйте открыть любую страницу сайта у любого магазина и в консоли браузера получить массив из цен на товары, которые имеются на этой странице. Решая эту задачу, вы очень быстро поймёте, что такое return и зачем он нужен в функциях, которые являются методами. Когда вы напишете свою первую "цепочку" вызовов методов через точки, то поймёте зачем их оборачивают в функции с return'ами.
То есть по сути return, это такоей невидимый вывод, верно?
Можно сказать и так. Идея ВОЗВРАТА в том, чтобы как-то модифицировать объект и передать его куда-то дальше.
Для удобства можно представлять себе конвейерную ленту на заводе. (кинули кусок металла, расплющили, округлили, заточили, воткнули палку == получилась лопата). Если чуть чуть меняем функции на пути ленты, то можем перенастроить на производство граблей, вил или тяпок. Суть примерно такая.
Я бы назвал это способом "невидимого общения" функций между собой.
а разве в консоле не надо писать console.log(SumAB(1,2)) чтобы увидеть результат?
Когда вы находитесь в самой консоли БРАУЗЕРА (на вкладке "Console") и пишете код именно в ней, то вы можете сразу обратиться в нужной вам переменной или функции по её идентификатору привязки (по имени). В этом случае можно не писать обращение console.log() т.к. вы уже в нужной "среде выполнения". Браузеры работающие на движке Chrome дают такую возможность.
Но если вы пишете в редакторе код, который затем будет исполняться в "среде выполнения" БРАУЗЕРА, то вам просто необходимо заключать нужные переменные в console.log(), чтобы затем увидеть уведомление в консоли браузера. --- Важно различать то место, где ваш код выполняется. Например, на сервере NodeJS работает своя консоль - она менее привлекательна, чем клиентская.
Я привожу примеры в клиентской консоли, чтобы мои зрители видели саму суть решения задачи (без лишних объектов и методов, которые могут запутать).
@@ЕфимРябов спасибо за развернутый ответ, видео полезное!))
Нельзя просто взять, и сказать "ответил ртом"!
Автор тянет интонацию, как будто болен, тема видео вообще высосана из пальца... Ну и стоит отметить слоупоков ниже: "Эээ спасибо, я дура не понимать, а Ваш видео моя сделать умный..."
Спасибо, что посмотрели. Думаю вы просто ошиблись с выбором видеоролика или ютуб вам случайно порекомендовал неподходящий контент.
Спасибо большое ✊
Спасибо!
Взаимно!
Спасибо