JavaВизначення сценарію та виклик функцій із прикладом

⚡ Розумний підсумок

JavaФункції скриптів групують блоки коду повторного використання, які виконуються лише під час виклику, і в цьому покроковому посібнику показано, як оголосити один із них, передавати в нього аргументи та повертати значення назад тому, хто викликає.

  • 🔘 Синтаксис: Ключове слово function, ім'я, круглі дужки та фігурні дужки визначають кожну класичну функцію.
  • ☑️ Дзвінки: Code всередині функції виконується лише тоді, коли ім'я функції викликається в дужках.
  • аргументи: Значення, поміщені в дужки, передають дані від викликаючої сторони в тіло функції.
  • 🧪 повернення: Ключове слово return надсилає значення назад викликаючій точці та зупиняє виконання в цій точці.
  • 🛠️ Варіанти: Оголошення, вирази, стрілкові функції, IIFE та зворотні виклики підходять для різних ситуацій.
  • 📊 Сфера застосування: Оголошення функцій піднімаються, тоді як функціональні вирази та стрілкові функції – ні.

JavaФункції визначення та виклику скриптів

Що таке функція в JavaСценарій?

Функції дуже важливі та корисні в будь-якій мові програмування, оскільки вони роблять код придатним для повторного використання. Функція — це блок коду, який буде виконано лише після його виклику. Якщо у вас є кілька рядків коду, які потрібно використовувати кілька разів, ви можете створити функцію, що включає повторювані рядки коду, а потім викликати цю функцію, де завгодно.

Ніщо всередині дужок не виконується самостійно. Браузер зберігає блок під назвою, яку ви йому дали, і код виконується лише тоді, коли ця назва записана з дужками після неї, наприклад myFunction()Таким чином, функції знаходяться в центрі кожного JavaScript програма, чи скрипт працює всередині сторінки або у зовнішньому файлі.

Як створити функцію в JavaScript

  1. Використовуйте ключове слово функція після чого йде назва функції.
  2. Після назви функції розкрийте та закрийте дужки.
  3. Після дужок розкрийте та закрийте фігурні дужки.
  4. У фігурних дужках напишіть рядки коду.

Синтаксис:

function functionname()
{

  lines of code to be executed

}

У наведеному нижче прикладі визначено myFunction() а потім викликає його в наступному рядку, щоб повідомлення з'явилося одразу після завантаження сторінки. Спробуйте самі:

<html>
<head>
	<title>Functions!!!</title>
	<script type="text/javascript">
      function myFunction()
      {
      	document.write("This is a simple function.<br />");
      }
		myFunction();
	</script>
</head>
<body>
</body>
</html>

Функція з аргументами

Ви також можете створювати функції з аргументами. Аргументи слід вказувати в дужках.

Синтаксис:

function functionname(arg1, arg2)

{

  lines of code to be executed

}

тут countVowels() отримує будь-яке ім'я, яке відвідувач вводить у запит, перебирає кожен символ і повідомляє, скільки голосних містить ім'я. Спробуйте самі:

<html>
<head>
	<script type="text/javascript">
		var count = 0;
		function countVowels(name)
		{
			for (var i=0;i<name.length;i++)
			{
              if(name[i] == "a" || name[i] == "e" || name[i] == "i" || name[i] == "o" || name[i] == "u")
              count = count + 1;
			}
		document.write("Hello " + name + "!!! Your name has " + count + " vowels.");
		}
   	 	var myName = prompt("Please enter your name");
    	countVowels(myName);
	</script>
</head>
<body>
</body>
</html>

JavaПовернене значення сценарію

Ви також можете створювати функції JS, які повертають значення. Усередині функції вам потрібно використовувати ключове слово повертати а потім значення, яке буде повернуто.

Синтаксис:

function functionname(arg1, arg2)

{

  lines of code to be executed

  return val1;

}

У цьому останньому прикладі returnSum() передає підсумок назад у рядок, який його викликав, щоб результат можна було об'єднати в речення, а не виводити всередині функції. Спробуйте це самі:

<html>
<head>
	<script type="text/javascript">
		function returnSum(first, second)
        {
          var sum = first + second;
          return sum;
        }
      var firstNo = 78;
      var secondNo = 22;
      document.write(firstNo + " + " + secondNo + " = " + returnSum(firstNo,secondNo));
	</script>
</head>
<body>
</body>
</html>

Типи функцій у JavaScript

У трьох наведених вище прикладах використовується класичне оголошення функції, але водночас сучасне JavaСкрипт пропонує кілька інших форм. Вони відрізняються головним чином тим, чи двигун їх піднімає, і тим, як кожна з них обробляє this keyword.

Тип функції Типовий синтаксис Коли його використовують
Оголошення функції функція greet() { } Іменована, повторно використовувана логіка; піднята на вершину її області застосування
Функціональний вираз const greet = function() { }; Зберігання функції у змінній; не піднімається
Функція стрілки (ES6) const greet = () => { }; Короткі зворотні виклики; успадковує це з навколишньої області видимості
Анонімна функція встановитиЧасОут(функція() { }, 100); Одноразова логіка передана безпосередньо в іншу функцію
IIFE (функція () { })(); Виконується негайно та зберігає свої змінні приватними
Callback items.forEach(showItem); Функція, передана іншій функції та викликана пізніше

Зверніть увагу на наведені вище приклади: використання історичних зразків var та document.write(), і обидва досі працюють у кожному браузері. Поточна практика оголошує змінні за допомогою let or const і друкує вивід через console.log() або встановивши textContent на елементі, оскільки document.write() стирає сторінку, яка вже завершила завантаження. type="text/javascript" Атрибут також необов'язковий у HTML5.

Параметри функцій, аргументи та значення за замовчуванням

Параметри – це імена-заповнювачі, перелічені у визначенні, тоді як аргументи – це реальні значення, що передаються під час виклику функції. countVowels(name) вище, name — параметр, а текст, введений у запит, — аргумент.

function greet(user, greeting = "Hello")
{
  return greeting + ", " + user;
}

greet("Ann");
greet("Ann", "Welcome");
  • Параметр без відповідного аргумента стає undefined якщо не вказано значення за замовчуванням, як greeting тут.
  • Додаткові аргументи ігноруються списком параметрів, але залишаються досяжними через arguments об'єкт всередині будь-якої функції, що не є стрілкою.
  • Параметр спокою, записаний як ...values збирає кожен аргумент, що залишився, у справжній масив.

Обсяг функцій та підйомні роботи JavaScript

Місце написання функції визначає, що вона може бачити та коли її можна викликати. Два правила пояснюють майже кожен сюрприз, з яким стикаються новачки.

  • Підйом: Оголошення функцій переміщуються на початок їхньої області видимості перед виконанням скрипта, тому їх можна викликати на рядку вище їхнього визначення. Функціональні вирази та стрілкові функції не піднімаються та викликаються передчасно.
  • Сфера застосування: змінні, оголошені за допомогою var всередині функції видно по всій цій функції, тоді як let та const обмежені блоком, у якому вони знаходяться. Все, що оголошено поза межами кожної функції, є глобальним.

Лічильник голосних показує це на практиці. Його count змінна оголошується поза функцією, тому виклик countVowels() вдруге на тій самій сторінці продовжує додавання до попереднього підсумку замість того, щоб починати з нуля. Переміщення оголошення всередині функції скидатиме його при кожному виклику.

Ці шотландські островиping правила також поширюються на серверний код, тому ті ж міркування застосовуються, коли функції пишуться для Node.js, і чому поведінка функції так часто з'являється в JavaЗапитання для співбесіди щодо сценарію.

Поширені запитання

Функція все ще виконується, але вона повертає undefinedПрисвоєння цього виклику змінній зберігає undefined, тому в прикладі sum використовується метод return, а не виведення підсумку всередині тіла функції.

Помічники ШІ можуть запропонувати тіло функції з коментаря, пояснити незнайомий зворотний виклик рядок за рядком і запропонувати тестові вхідні дані. Завжди запускайте пропозицію, оскільки згенерований код може непомітно припускати змінну або API браузера, яких сторінка не надає.

Зазвичай так. Копілот GitHub завершує синтаксис стрілок та загальні шаблони зворотних викликів з контексту. Перевіряє значення this у результаті, оскільки стрілочна функція успадковує його, тоді як класичний функціональний вираз — ні.

Замикання — це функція, пов'язана із зовнішніми змінними, на які вона посилалася під час створення. Внутрішня функція продовжує зчитувати ці змінні навіть після завершення роботи зовнішньої функції, саме так створюються приватні лічильники та фабричні функції.

Так, і це називається рекурсією. Функція повинна містити базовий випадок, який зупиняє ланцюжок, інакше браузер викличе помилку діапазону, коли стек викликів буде вичерпано. Рекурсія підходить для задач обходу дерев та факторіального стилю.

Асинхронна функція завжди повертає проміс. Усередині неї, await призупиняє цю роботу, доки не буде виконано очікуваний проміс, дозволяючи асинхронному коду читатися зверху вниз. Решта сторінки продовжує реагувати, поки функція очікує.

Приєднайте його за допомогою слухача подій: виберіть кнопку, потім викличте addEventListener з назвою події та посиланням на функцію. Старіший вбудований атрибут onclick також працює, хоча тепер перевага надається відділенню розмітки від поведінки.

Дужки викликають її негайно та повертають її результат. Написання лише назви передає саму функцію, що й потрібно для зворотних викликів. Додавання дужок помилково всередині setTimeout запускає код одразу, а не пізніше.

Підсумуйте цей пост за допомогою: