Уроки 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
Обьяснение работы return лучшее, я считаю. Всегда эта тема даётся с трудом. Спасибо.
Важное замечание, которое не было оговорено в видео: переменная внутри функции будет локальной если она была определена через "var" или "let". Если мы объявим переменную следующим образом внутри функции: "num = 10;", то переменная будет глобальной, и мы получим к ней доступ вне функции.
Одна из важных и непростых тем в JavaScript, заметил что самое сложное в программировании это создание переменной, кажется просто на первый взгляд, но нет. Как раз в теме функции это и есть самая непростая вещь, нужно абстрактно и логически мыслить при таких заданиях. Автору спасибо за урок и прекрасную возможность учиться бесплатно!
Всё отлично, но как и многие на важном месте переходишь за секунды, но в не нужных местах минутами стоишь и объясняет 🤦♂️
Спасибо за ваш труд! Очень удобно учить язык по вашим урокам)))
Гоша, спасибо за максимально понятные объяснения!
Спасибо вам, у вас талант объяснять! Очень нравится учить язык по вашему курсу👍🏾👍🏾👍🏾
Спасибо за длинный урок. Было очень интересно. Жду следующего видео
@itproger
3 жыл бұрын
😉
Спасибо за ваш труд
класс, очень крутой видеоурок
Спасибо огромное за урок)
Спасибо за труд)
Очень крутой курс, спасибо за Ваш труд! Продолжайте в том же духе!
@itproger
3 жыл бұрын
Спасибо ☺️
@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
3 жыл бұрын
@Asher Emanuel definitely, I have been using Instaflixxer for years myself =)
@ancol3582
Жыл бұрын
@Alina Smislova Нагрузка
В JavaScript функции могут быть описаны не только одна за другой, но и одна внутри другой. Когда у вас одна функция находится внутри другой, то внутренняя функция имеет доступ к переменным внешней функции. Это вроде замыканием называется, но могу ошибаться. А ты сказал, что функцию в функции нельзя создать
Спасибо за все
Спасибо большое за урок!!!!!!
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
2 жыл бұрын
Получается во втором случае, мы не создаем новую переменную, а просто изменяем существующую?
@user-rv8gg5xj9t
11 ай бұрын
@@user-ms8wz6bc5e ага
Дякую за урок! Супер)
браво!
Кто нибудь может объяснить для чего эти все функции нужны во фронтенде?
Спасибо за видео, годно. Только я не понял немного функцию для подсчёта суммы начиная с строчки кода "for(var = i...") заканчивая выводом в консоль.
@kirysha52
Жыл бұрын
тоже блин понять не могу почему это именно так и как оно работает(
@muhlymak
Жыл бұрын
@@kirysha52 запускается цикл (до этого автор все понятно объяснил в видео про циклы), начиная с 0 до момента пока i не станет меньше чем длина массива (длина вычисляется функцией length, это дает возможность перебирать любой список, не прописывая какое-то конкретное значение, список (массив) может же быть любой длины, на каждой итерации цикла к i прибавляется 1. Уже в теле цикла переменная sum перезаписывает сама себя прибавляя значение из массива обращаясь к нему по индексу (роль которого исполняет i) изначально sum была ноль, значит потом 0 + 6, потом 6 + 8, потом 14 + 1 и на выходе имеем 15 ) Т.к. переменная sum вынесена за цикл это позволяет нам делать с ней такие манипуляции, это очень частый прием для циклов как правило так реализуют какие-то накопительные подсчеты, счетчики. Это все прям база база для любого языка программирования) надеюсь помог, удачи в изучении
@I.C.-0n
10 ай бұрын
@@muhlymak Спасибо Вам огромное! Я так долго сидел тупил, не мог понять, как это работает. Но после вашего комментария - все прояснилось) Спасибо еще раз - Вы мне очень помогли!
Спасибо
а зачем прописывать для глобальной перменной "var", если можно просто задать переменную и ее значение как "num = 1;"? для удобства или есть какая-то особенность?
спасибо
функция для подсчёта суммы, это прям пипец или я устал или реально это сложно для меня, пока что.Просто не могу понять как получилось 15
@oggang2974
2 жыл бұрын
Помогите пожалуйста пацаны такая же история
@friendlyfire9269
2 жыл бұрын
Тоже выводит 0 и всё. ХЗ)
Мне очень понравились предыдущие уроки ,но вот это нечто . Абсолютно ничего не понятно , с 7 минуты что то пошло не так то arr выводите то переменная Array, мозг тормознул , можно было бы проще .
@user-oq1nx6it2y
Жыл бұрын
Я тоже тут из-за arr array листаю комменты, вроде начала щас понимать, но по-моему автору не стоило называть их одинаково иначе сразу непонятно почему в функции у него сокращённо, а дальше полностью написано. Как и многие другие он останавливается на итак понятных моментах, а сложные даже не пытается объяснить..
// 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)
super
Вообще функцию в другой функции возможно создать, только эту функцию нужно вызывать именно в рамках той функции в которой мы ее поместили, так как за ее скобками она будет неопределенна. А по идеи так лучше просто не делать)
Кто ничего не понял смотрите ролики дальше на вашем пути столько ещё функций попадется что оно само сабой будет решаться, если вы не поняли какуюто тему не пересматривайте ее и не заучивайте идите дальше сам такие ошибки делал, единственное записуйте в блокнот или тетрадку
У меня сумму 0 высвечивает, а не 15 , вроде проверил всё 3 раза, но так же остаётся ноль 😢
а как-же стрелочные функции?))
Создание функции это как миксины в предпроцессорах цсс ))
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
2 жыл бұрын
Почему при сложение a+b в таком виде: document.write(a + " + " + b + " = " + (a + b)); результат получается другой. Такое сложение считается ошибкой в данном случае?
Я не понял, что значит arr[i] ?
@itproger
3 жыл бұрын
Берем элемент массива под индексом «i»
Если я сосздал переменную и аставил её в функцию ето правильно?
@user-oq1nx6it2y
Жыл бұрын
Чел врятли ты спасобен чтото сасдать
Всепонятно но не понятно почему получаем сумму чисел массива а не выводятся все числа +1?
@evgeniyvilkhovoj6252
Жыл бұрын
потому что значение i++ говорит нам о том, что каждое число внутри массива будет добавляться к переменной sum. К примеру, если указать что i+=2 , то в такое случае добавится число 6 и 1. Потому что с помощью i+=2 мы пропустили второй элемент внутри массива ( 8 ).
кто может объяснить функцию для подсчета сумы чисел ? я уже поплавился )))
@Nezi_11
7 ай бұрын
5 = a 7 = b Короче,сложно объяснить,я пайтон учил,мне легче
Объясните кто-нибудь... как у нас начали складывать элементы массива если сумма изначально равна 0? причем тут вообще эта сумма?
@bunbo3240
10 ай бұрын
Стрчка "var sum = 0" нужна для инициализации массива для дальнейшего подсчета. То есть мы говорим: создаем переменную sum = 0. Далее прибавляем к переменной sum значения элементов массива(если массив, например, равен: [1, 3, 8], то получим sum = sum + 1, затем sum = sum + 3, и наконец sum = sum + 8. В итоге sum станет равно 12).
Спасибо огромное за урок))))) А как можно решить такую задачку? Я новичок в js. Помогите найти правильное решение. Заранее спасибо за ответ) Создаём две функции: *Первая функция number(num) должна принимать число и возвращать квадрат этого числа. *Вторая функция запрашивает у пользователя число от 18 до 50. И если пользователь ввёл не число, нужно сделать ему одно замечание, а если число, нужно вызвать функцию number передав в неё это самое число. Необходимо вывести результат пользователю либо замечание, либо квадрат числа.
@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
2 жыл бұрын
@@andreybrovko2327 function sqrt(i) {return (i * i)}; Let x = prompt('введите число от 18 до 50',); If (!sqrt(x)) {alert('введите число')} Else {alert(sqrt(x))};
@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
тут в конце ты забыл объяснить функция Global как в питоне, или в JavaScript его не существует?(
@muhlymak
Жыл бұрын
Если воникает желание использовать global значит ты что-то делаешь не так, нужно пересмотреть решение задачи) global в питоне сделан в качестве костыля)
js и python похожи
14:22
Вы сказали что внутри одной функции нельзя создавать другую функцию, а замыкания функции к этому не относится?
@itproger
3 жыл бұрын
Это отдельная тема, но в классическом виде такое делать нельзя 🚫
@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); //ошибка!
паша дударь обработался корректно
КЛАСС! Затрагиваешь тему на несколько минут, и даже не тестишь ее, гений гайдов
@iskiratgames5761
2 жыл бұрын
Чел, ты ошибся каналом
спасибо за очень понятный урок я успел даже дримнуть хх
Настал тот момент когда вообще ничего не понятно (
var устарел
@vuitlik5449
3 жыл бұрын
Странно, миллионы пользуются, а ты говоришь что он устарел.
@oldfuck5836
3 жыл бұрын
@@vuitlik5449 лол,миллионы дурачков? let уже давно юзается как
@tixonochek
3 жыл бұрын
Эмм, VAR тоже используется. Если ты дурачек - у var и let разные уникальные отличия, для разных задач нужны разные виды.
Сложно и непонятно уже или мне кажется?..
@SAMANUELb
10 ай бұрын
кажется
Я не могу понять логики JS потому что везде числа , слова .. но мне нужна практика на то что где это всё используется как используется .. может и как показываешь ноо ен знаю
@SP_StudioGAMES
4 ай бұрын
Так поставь себе цель(у меня ето написания Raycasting pseudo 3d игры) и смотри уроки, думай логически где в твоём проекте это можно пременить, я когда учил СЛУЧАЙНО написал кликер при помощи while и всплывающих окон
пж сделайте опший урок по JS
@itproger
3 жыл бұрын
Что это означает?
@dmitriystr
3 жыл бұрын
@@itproger я думаю он пытается передать тему ролика "JS за одни час" или "JS за 1,5 часа"
@vuitlik5449
3 жыл бұрын
За один урок ты даже основы не выучишь
@shaomi2000
3 жыл бұрын
@@vuitlik5449 в ютубе 6 часовый курс есть. Собери все видео которые выложены на этом канале о js и подумай дважды
@vuitlik5449
3 жыл бұрын
@@shaomi2000 Подумал, выучить многомиллионный язык, укомпоновав все это в 6 часовой ролик... невозможно
ну все тепреь я 14ти летний программер
@standvik1159
2 жыл бұрын
как успехи?
@SAMANUELb
10 ай бұрын
@@standvik1159 теперь он 15 летний программер
Нифига не понял🥲
Сложно стало понимать (
@tixonochek
3 жыл бұрын
наоборот легче
@user-ok2js4fs9d
3 жыл бұрын
До этого урока прям вообще хорошо было. А здесь гораздо тяжелее .
Изучил 10 уроков и у меня пара вопросов: Нахрена всё это надо? и Где примеры для использования? Очень сложно изучать теаорию, не подкреплённую практикой, нужны примеры! Не надо писать большой код, показать некий сайт, например, и ту же функцию, и показать этот участок кода, хотя бы в общих чертах расскажите!
11:10 - ЛОЖЬ. Мы можем создавать функцию внутри другой функции! Мы даже можем использовать в дочерней функции переменные объявленные в родительской функции.
@itproger
3 жыл бұрын
Да, можем, но это уже будет замыкания. Это немного другое. Если говорить про простой способ написания функций, то их отдельно надо прописывать
спасибо