Уроки JavaScript для начинающих / #10 - Функции в языке JavaScript

Функции в JavaScript выполняют важную роль. Они обеспечивают сокращение кода за счет вынесения его в отдельные места. За урок мы научимся создавать функции и передавать в них значения.
✅ Полезные ссылки:
Урок на сайте itProger: itproger.com/course/javascrip...
⏰ Тайм коды:
00:00 - Начало
00:18 - Что такое функции?
03:06 - Создание простой функции
05:56 - Передача параметров
11:30 - Функция для подсчета суммы чисел
14:15 - Возвращение значений. Оператор «return»
16:55 - Локальные и глобальные переменные
20:15 - Заключительная часть
✔ Сообщество программистов: itproger.com/
✔ -------------
Вступай в группу Вк - prog_life 🚀
Группа FaceBook - goo.gl/XW0aaP
Инстаграм itProger: / itproger_official
Instagram: / gosha_dudar
Telegram: t.me/itProger_official
Twitter - / goshadudar
- Уроки от #itProger 👨🏼‍💻
- Все уроки по хештегу #itprogerLessons

Пікірлер: 109

  • @user-ok3sh6ri5e
    @user-ok3sh6ri5e2 ай бұрын

    Обьяснение работы return лучшее, я считаю. Всегда эта тема даётся с трудом. Спасибо.

  • @bunbo3240
    @bunbo324010 ай бұрын

    Важное замечание, которое не было оговорено в видео: переменная внутри функции будет локальной если она была определена через "var" или "let". Если мы объявим переменную следующим образом внутри функции: "num = 10;", то переменная будет глобальной, и мы получим к ней доступ вне функции.

  • @Kolya3578
    @Kolya35789 ай бұрын

    Одна из важных и непростых тем в JavaScript, заметил что самое сложное в программировании это создание переменной, кажется просто на первый взгляд, но нет. Как раз в теме функции это и есть самая непростая вещь, нужно абстрактно и логически мыслить при таких заданиях. Автору спасибо за урок и прекрасную возможность учиться бесплатно!

  • @karimov3556
    @karimov35562 жыл бұрын

    Всё отлично, но как и многие на важном месте переходишь за секунды, но в не нужных местах минутами стоишь и объясняет 🤦‍♂️

  • @VeronikaBelskaya
    @VeronikaBelskaya Жыл бұрын

    Спасибо за ваш труд! Очень удобно учить язык по вашим урокам)))

  • @evgenymakhanov
    @evgenymakhanov Жыл бұрын

    Гоша, спасибо за максимально понятные объяснения!

  • @VeronikaBelskaya
    @VeronikaBelskaya Жыл бұрын

    Спасибо вам, у вас талант объяснять! Очень нравится учить язык по вашему курсу👍🏾👍🏾👍🏾

  • @dmitriystr
    @dmitriystr3 жыл бұрын

    Спасибо за длинный урок. Было очень интересно. Жду следующего видео

  • @itproger

    @itproger

    3 жыл бұрын

    😉

  • @user-vn7mb6vf2f
    @user-vn7mb6vf2f3 жыл бұрын

    Спасибо за ваш труд

  • @ping0.127
    @ping0.1273 жыл бұрын

    класс, очень крутой видеоурок

  • @skolotoi4588
    @skolotoi45882 жыл бұрын

    Спасибо огромное за урок)

  • @realmadrid-ji9bd
    @realmadrid-ji9bd3 жыл бұрын

    Спасибо за труд)

  • @smislovva
    @smislovva3 жыл бұрын

    Очень крутой курс, спасибо за Ваш труд! Продолжайте в том же духе!

  • @itproger

    @itproger

    3 жыл бұрын

    Спасибо ☺️

  • @asheremanuel1233

    @asheremanuel1233

    3 жыл бұрын

    you probably dont care but if you're bored like me during the covid times you can stream all the new movies on InstaFlixxer. Been streaming with my girlfriend for the last few days :)

  • @dukeatlas5415

    @dukeatlas5415

    3 жыл бұрын

    @Asher Emanuel definitely, I have been using Instaflixxer for years myself =)

  • @ancol3582

    @ancol3582

    Жыл бұрын

    @Alina Smislova Нагрузка

  • @artrone9377
    @artrone9377 Жыл бұрын

    В JavaScript функции могут быть описаны не только одна за другой, но и одна внутри другой. Когда у вас одна функция находится внутри другой, то внутренняя функция имеет доступ к переменным внешней функции. Это вроде замыканием называется, но могу ошибаться. А ты сказал, что функцию в функции нельзя создать

  • @alimniyazov5248
    @alimniyazov52483 жыл бұрын

    Спасибо за все

  • @sichouli1914
    @sichouli19143 жыл бұрын

    Спасибо большое за урок!!!!!!

  • @user-tv9nb4by4n
    @user-tv9nb4by4n3 жыл бұрын

    20:15 стоило бы добавить: При данном коде, когда используется одинаковый идентификатор (имя переменной) num - сначала для глобальной переменной, а затем для локальной - происходит следующее: 1) Код: //объявляется глобальная переменная с присвоением значения 10 var num = 10; function info() { //объявляется ЛОКАЛЬНАЯ переменная с присвоением значения 20 var num = 20; //глобальная переменная становится свойством глоб.объекта window //проверим - с какой переменной num мы имеем дело в теле данной функции //обратимся к глоб.переменной num и посмотрим на её значение console.log("global_num = " + window.num); // global_num = 10 //как и говорил автор, локальная переменная с именем num не имеет отношения к глоб.переменной num console.log("local_num = " + num); // local_num = 20 } info(); console.log("global_num = " + num); // global_num = 10 2) Если в теле функции info() мы уберем слово var перед num - мы начнем работать и обращаться к ГЛОБАЛЬНОЙ переменной с именем num! Код: //объявляется глобальная переменная с присвоением значения 10 var num = 10; function info() { //без var, мы обращаемся к ГЛОБАЛЬНОЙ переменной и присваиваем ей значение 20 //после вызова функции info, будет существовать переменная num ТОЛЬКО со значением 20 num = 20; //проверяем с какой переменной мы имеем дело //сейчас мы работаем с ГЛОБАЛЬНОЙ переменной console.log("global_num = " + window.num); //global_num = 20, а не 10 console.log("num = " + num); // num = 20 } info(); console.log("num = " + num); // num = 20 3. Можно сделать переменную, находящуюся в теле функции глобальной! Просто не нужно добавлять var перед именем переменной. Не работает в строгом режиме ('use strict')!!! Код: function info() { //не добавляем var перед num и после выполнения функции - num станет ГЛОБ.переменной! num = 20; //проверим переменную num. Локальная она или глобальная... //есди глобальная - у объекта window будет свойство num console.log(window.num); // 20 console.log("num = " + num); // num = 20 //ради эксперимента: добавим локальную переменную с именем x var x = 45; //проверим переменную x. Локальная она или глобальная... console.log(window.x); // undefined - значит переменная НЕ глобальная. //выведем локальную переменную x. console.log("Переменная х = " + x + " - локальная."); // Переменная х = 45 - локальная. } //после выполнения функции, переменная num внутри неё станет ГЛОБАЛЬНОЙ! Будет доступна вне функции! //а переменная x глобальной не станет и перестанет существовать. info(); //обращаемся к ставшей глобальной переменной num console.log("num = " + num); // num = 20 //обращаемся к локальной переменной x. console.log("x = " + x); // получаем ошибку, т.к. такой переменной не существует (она не определена).

  • @user-ms8wz6bc5e

    @user-ms8wz6bc5e

    2 жыл бұрын

    Получается во втором случае, мы не создаем новую переменную, а просто изменяем существующую?

  • @user-rv8gg5xj9t

    @user-rv8gg5xj9t

    11 ай бұрын

    @@user-ms8wz6bc5e ага

  • @dmitry_beresten
    @dmitry_beresten Жыл бұрын

    Дякую за урок! Супер)

  • @maksymosmakov9073
    @maksymosmakov90733 жыл бұрын

    браво!

  • @maxsobol1748
    @maxsobol1748 Жыл бұрын

    Кто нибудь может объяснить для чего эти все функции нужны во фронтенде?

  • @yanaslh
    @yanaslh2 жыл бұрын

    Спасибо за видео, годно. Только я не понял немного функцию для подсчёта суммы начиная с строчки кода "for(var = i...") заканчивая выводом в консоль.

  • @kirysha52

    @kirysha52

    Жыл бұрын

    тоже блин понять не могу почему это именно так и как оно работает(

  • @muhlymak

    @muhlymak

    Жыл бұрын

    @@kirysha52 запускается цикл (до этого автор все понятно объяснил в видео про циклы), начиная с 0 до момента пока i не станет меньше чем длина массива (длина вычисляется функцией length, это дает возможность перебирать любой список, не прописывая какое-то конкретное значение, список (массив) может же быть любой длины, на каждой итерации цикла к i прибавляется 1. Уже в теле цикла переменная sum перезаписывает сама себя прибавляя значение из массива обращаясь к нему по индексу (роль которого исполняет i) изначально sum была ноль, значит потом 0 + 6, потом 6 + 8, потом 14 + 1 и на выходе имеем 15 ) Т.к. переменная sum вынесена за цикл это позволяет нам делать с ней такие манипуляции, это очень частый прием для циклов как правило так реализуют какие-то накопительные подсчеты, счетчики. Это все прям база база для любого языка программирования) надеюсь помог, удачи в изучении

  • @I.C.-0n

    @I.C.-0n

    10 ай бұрын

    @@muhlymak Спасибо Вам огромное! Я так долго сидел тупил, не мог понять, как это работает. Но после вашего комментария - все прояснилось) Спасибо еще раз - Вы мне очень помогли!

  • @lawdriver88
    @lawdriver88 Жыл бұрын

    Спасибо

  • @dante_wat1733
    @dante_wat17333 жыл бұрын

    а зачем прописывать для глобальной перменной "var", если можно просто задать переменную и ее значение как "num = 1;"? для удобства или есть какая-то особенность?

  • @Burovasofia
    @Burovasofia Жыл бұрын

    спасибо

  • @vnasakar6150
    @vnasakar61502 жыл бұрын

    функция для подсчёта суммы, это прям пипец или я устал или реально это сложно для меня, пока что.Просто не могу понять как получилось 15

  • @oggang2974

    @oggang2974

    2 жыл бұрын

    Помогите пожалуйста пацаны такая же история

  • @friendlyfire9269

    @friendlyfire9269

    2 жыл бұрын

    Тоже выводит 0 и всё. ХЗ)

  • @world_in_3d79
    @world_in_3d792 жыл бұрын

    Мне очень понравились предыдущие уроки ,но вот это нечто . Абсолютно ничего не понятно , с 7 минуты что то пошло не так то arr выводите то переменная Array, мозг тормознул , можно было бы проще .

  • @user-oq1nx6it2y

    @user-oq1nx6it2y

    Жыл бұрын

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

  • @user-yl3wu2ik5j
    @user-yl3wu2ik5j8 ай бұрын

    // function count(num1, sym, num2) { // if (sym == "+") alert(num1 + num2); // else if (sym == "-") alert(num1 - num2); // else if (sym == "*") alert(num1 * num2); // else if (sym == "/") alert(num1 / num2); // } // var num1 = parseInt(prompt("Первое число: ")); // var sym = prompt("Символ: "); // var num2 = parseInt(prompt("Второе число: ")); // count(num1, sym, num2)

  • @Anatoliy1790
    @Anatoliy1790 Жыл бұрын

    super

  • @user-cg2cf2ys3t
    @user-cg2cf2ys3t2 ай бұрын

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

  • @user-sx4lz7wq7s
    @user-sx4lz7wq7s8 ай бұрын

    Кто ничего не понял смотрите ролики дальше на вашем пути столько ещё функций попадется что оно само сабой будет решаться, если вы не поняли какуюто тему не пересматривайте ее и не заучивайте идите дальше сам такие ошибки делал, единственное записуйте в блокнот или тетрадку

  • @user-kk3rk9np8l
    @user-kk3rk9np8l Жыл бұрын

    У меня сумму 0 высвечивает, а не 15 , вроде проверил всё 3 раза, но так же остаётся ноль 😢

  • @Deestylovmusic
    @Deestylovmusic3 жыл бұрын

    а как-же стрелочные функции?))

  • @flashback8504
    @flashback85042 жыл бұрын

    Создание функции это как миксины в предпроцессорах цсс ))

  • @user-qk3ey6tb1k
    @user-qk3ey6tb1k3 жыл бұрын

    var first_num = prompt("Введите первое число"); var second_num = prompt("Введите второе число"); function print(a, b) { document.write(a + " + " + b + " = " + (Number(a) + Number(b))); } print(first_num, second_num);

  • @user-ms8wz6bc5e

    @user-ms8wz6bc5e

    2 жыл бұрын

    Почему при сложение a+b в таком виде: document.write(a + " + " + b + " = " + (a + b)); результат получается другой. Такое сложение считается ошибкой в данном случае?

  • @user-ce8mh4px7u
    @user-ce8mh4px7u3 жыл бұрын

    Я не понял, что значит arr[i] ?

  • @itproger

    @itproger

    3 жыл бұрын

    Берем элемент массива под индексом «i»

  • @-mishana-
    @-mishana- Жыл бұрын

    Если я сосздал переменную и аставил её в функцию ето правильно?

  • @user-oq1nx6it2y

    @user-oq1nx6it2y

    Жыл бұрын

    Чел врятли ты спасобен чтото сасдать

  • @kavm85
    @kavm85 Жыл бұрын

    Всепонятно но не понятно почему получаем сумму чисел массива а не выводятся все числа +1?

  • @evgeniyvilkhovoj6252

    @evgeniyvilkhovoj6252

    Жыл бұрын

    потому что значение i++ говорит нам о том, что каждое число внутри массива будет добавляться к переменной sum. К примеру, если указать что i+=2 , то в такое случае добавится число 6 и 1. Потому что с помощью i+=2 мы пропустили второй элемент внутри массива ( 8 ).

  • @user-fo4wy9iw6j
    @user-fo4wy9iw6j Жыл бұрын

    кто может объяснить функцию для подсчета сумы чисел ? я уже поплавился )))

  • @Nezi_11

    @Nezi_11

    7 ай бұрын

    5 = a 7 = b Короче,сложно объяснить,я пайтон учил,мне легче

  • @ST-ut1tg
    @ST-ut1tg Жыл бұрын

    Объясните кто-нибудь... как у нас начали складывать элементы массива если сумма изначально равна 0? причем тут вообще эта сумма?

  • @bunbo3240

    @bunbo3240

    10 ай бұрын

    Стрчка "var sum = 0" нужна для инициализации массива для дальнейшего подсчета. То есть мы говорим: создаем переменную sum = 0. Далее прибавляем к переменной sum значения элементов массива(если массив, например, равен: [1, 3, 8], то получим sum = sum + 1, затем sum = sum + 3, и наконец sum = sum + 8. В итоге sum станет равно 12).

  • @user-er3le7uo6v
    @user-er3le7uo6v3 жыл бұрын

    Спасибо огромное за урок))))) А как можно решить такую задачку? Я новичок в js. Помогите найти правильное решение. Заранее спасибо за ответ) Создаём две функции: *Первая функция number(num) должна принимать число и возвращать квадрат этого числа. *Вторая функция запрашивает у пользователя число от 18 до 50. И если пользователь ввёл не число, нужно сделать ему одно замечание, а если число, нужно вызвать функцию number передав в неё это самое число. Необходимо вывести результат пользователю либо замечание, либо квадрат числа.

  • @andreybrovko2327

    @andreybrovko2327

    2 жыл бұрын

    function f1(num){ num = Math.pow(num, 2); return num; } function f2() { var a = prompt("Input number from 18 to 50"); var b = f1(a); if(!Number.isNaN(a) && a > 18 && a alert(b); } else { alert("Your input does not fit"); } } f2();

  • @user-jr1qc5je6f

    @user-jr1qc5je6f

    2 жыл бұрын

    @@andreybrovko2327 function sqrt(i) {return (i * i)}; Let x = prompt('введите число от 18 до 50',); If (!sqrt(x)) {alert('введите число')} Else {alert(sqrt(x))};

  • @user-ms8wz6bc5e

    @user-ms8wz6bc5e

    2 жыл бұрын

    Для тех, кто изучал JS только по урокам Гоши, и только до этого урока включительно: function f1(num) { return num * num; //или return Math.pow(num, 2); } function f2() { var a = prompt("Введите число от 18 до 50"); var b = f1(a); if (a >= 18 && a

  • @ichitubeT
    @ichitubeT3 жыл бұрын

    тут в конце ты забыл объяснить функция Global как в питоне, или в JavaScript его не существует?(

  • @muhlymak

    @muhlymak

    Жыл бұрын

    Если воникает желание использовать global значит ты что-то делаешь не так, нужно пересмотреть решение задачи) global в питоне сделан в качестве костыля)

  • @Hikikomori123
    @Hikikomori12311 ай бұрын

    js и python похожи

  • @amazing_youtube
    @amazing_youtube8 ай бұрын

    14:22

  • @user-ph7uw4gw7t
    @user-ph7uw4gw7t3 жыл бұрын

    Вы сказали что внутри одной функции нельзя создавать другую функцию, а замыкания функции к этому не относится?

  • @itproger

    @itproger

    3 жыл бұрын

    Это отдельная тема, но в классическом виде такое делать нельзя 🚫

  • @user-tv9nb4by4n

    @user-tv9nb4by4n

    3 жыл бұрын

    @@itproger 11:12 - ну почему же опять нельзя?? Можно! function summ(a, b) { var res = a + b; //создал функцию в теле функции function showResult(result) { alert(result); } showResult(res); } summ(3, 4); // 7 Важный момент! Функцией, созданной в теле другой функции нельзя будет "пользоваться" извне. Если ее вызвать за пределами функции, в которой она создана - будет ошибка! Например: showResult(3); //ошибка!

  • @vottak304
    @vottak3046 ай бұрын

    паша дударь обработался корректно

  • @korsman723
    @korsman7232 жыл бұрын

    КЛАСС! Затрагиваешь тему на несколько минут, и даже не тестишь ее, гений гайдов

  • @iskiratgames5761

    @iskiratgames5761

    2 жыл бұрын

    Чел, ты ошибся каналом

  • @chou_mlbb_ru
    @chou_mlbb_ru Жыл бұрын

    спасибо за очень понятный урок я успел даже дримнуть хх

  • @user-cb2cy6dh4l
    @user-cb2cy6dh4lАй бұрын

    Настал тот момент когда вообще ничего не понятно (

  • @oldfuck5836
    @oldfuck58363 жыл бұрын

    var устарел

  • @vuitlik5449

    @vuitlik5449

    3 жыл бұрын

    Странно, миллионы пользуются, а ты говоришь что он устарел.

  • @oldfuck5836

    @oldfuck5836

    3 жыл бұрын

    @@vuitlik5449 лол,миллионы дурачков? let уже давно юзается как

  • @tixonochek

    @tixonochek

    3 жыл бұрын

    Эмм, VAR тоже используется. Если ты дурачек - у var и let разные уникальные отличия, для разных задач нужны разные виды.

  • @user-hi7mm1jw2c
    @user-hi7mm1jw2c3 жыл бұрын

    Сложно и непонятно уже или мне кажется?..

  • @SAMANUELb

    @SAMANUELb

    10 ай бұрын

    кажется

  • @reshad_ali
    @reshad_ali7 ай бұрын

    Я не могу понять логики JS потому что везде числа , слова .. но мне нужна практика на то что где это всё используется как используется .. может и как показываешь ноо ен знаю

  • @SP_StudioGAMES

    @SP_StudioGAMES

    4 ай бұрын

    Так поставь себе цель(у меня ето написания Raycasting pseudo 3d игры) и смотри уроки, думай логически где в твоём проекте это можно пременить, я когда учил СЛУЧАЙНО написал кликер при помощи while и всплывающих окон

  • @xx3027
    @xx30273 жыл бұрын

    пж сделайте опший урок по JS

  • @itproger

    @itproger

    3 жыл бұрын

    Что это означает?

  • @dmitriystr

    @dmitriystr

    3 жыл бұрын

    @@itproger я думаю он пытается передать тему ролика "JS за одни час" или "JS за 1,5 часа"

  • @vuitlik5449

    @vuitlik5449

    3 жыл бұрын

    За один урок ты даже основы не выучишь

  • @shaomi2000

    @shaomi2000

    3 жыл бұрын

    @@vuitlik5449 в ютубе 6 часовый курс есть. Собери все видео которые выложены на этом канале о js и подумай дважды

  • @vuitlik5449

    @vuitlik5449

    3 жыл бұрын

    @@shaomi2000 Подумал, выучить многомиллионный язык, укомпоновав все это в 6 часовой ролик... невозможно

  • @user-uh7jy9fo8s
    @user-uh7jy9fo8s2 жыл бұрын

    ну все тепреь я 14ти летний программер

  • @standvik1159

    @standvik1159

    2 жыл бұрын

    как успехи?

  • @SAMANUELb

    @SAMANUELb

    10 ай бұрын

    @@standvik1159 теперь он 15 летний программер

  • @KOSMONAFT1K
    @KOSMONAFT1K Жыл бұрын

    Нифига не понял🥲

  • @ioji1476
    @ioji14763 жыл бұрын

    Сложно стало понимать (

  • @tixonochek

    @tixonochek

    3 жыл бұрын

    наоборот легче

  • @user-ok2js4fs9d

    @user-ok2js4fs9d

    3 жыл бұрын

    До этого урока прям вообще хорошо было. А здесь гораздо тяжелее .

  • @kodimSHkodim
    @kodimSHkodim3 күн бұрын

    Изучил 10 уроков и у меня пара вопросов: Нахрена всё это надо? и Где примеры для использования? Очень сложно изучать теаорию, не подкреплённую практикой, нужны примеры! Не надо писать большой код, показать некий сайт, например, и ту же функцию, и показать этот участок кода, хотя бы в общих чертах расскажите!

  • @user-rq4zz1pm5j
    @user-rq4zz1pm5j3 жыл бұрын

    11:10 - ЛОЖЬ. Мы можем создавать функцию внутри другой функции! Мы даже можем использовать в дочерней функции переменные объявленные в родительской функции.

  • @itproger

    @itproger

    3 жыл бұрын

    Да, можем, но это уже будет замыкания. Это немного другое. Если говорить про простой способ написания функций, то их отдельно надо прописывать

  • @Console.WriteLine
    @Console.WriteLine Жыл бұрын

    спасибо

Келесі