Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
 
Marchuk
0 / 0 / 0
Регистрация: 10.07.2018
Сообщений: 3
1

Объявление и вызов функции

19.11.2018, 19:07. Просмотров 74. Ответов 3
Метки нет (Все метки)

в одном из видео по разбору DOM человек объявлял и вызывал функцию следующим образом:

Javascript
1
2
3
(function() {
  *код функции*
})();
Я умею объявлять и выводить функцию только так:

Javascript
1
2
3
4
var abc = function() {
  *код функции*
}
abc();
Объясните что за обилие скобок и в чем разница между примерами?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2018, 19:07
Ответы с готовыми решениями:

Вызов функции по клику
Привет всем. Помогите с решением. У меня есть функция: <script>$(function (){...

Вызов функции checkbox onclick
Есть форма с чекбоксами: ... <form action="index.html" method="post"> <input...

Вызов функции в цикле (от новичка)
Добрый день. Никак не могу понять поведение Js, надеюсь вы мне подскажите. Код для примера...

Вызов JavaScript функции внутри php
Всем привет. Есть необходимость вызвать ява функцию внутри пхп. Собственно вот таким кодом я...

Вызов функции через JS - переделка решения
Всем привет) задача скрипта: скрипт вставляет тег в input. т.е готовые слова, например: выбираешь...

3
amr-now
935 / 596 / 280
Регистрация: 14.06.2018
Сообщений: 1,612
19.11.2018, 20:07 2
В первом случае - автоматически вызываемая анонимная функция. Объявили и тут же вызвали.

Во втором случае адрес анонимной функции присваивается переменной. И с использованием скобок аргументов из переменной запускается функция, адрес которой хранится в переменной.

Есть третий и самый классический способ объявления именованной функции:
Javascript
1
2
3
4
function abc() {
*код функции*
}
abc();
В связи с модой на функциональное программирование третья запись сейчас стала немного менее популярной.

Четвертый современный способ. Во всех распространенных языках появились анонимные лямбда-функции, которые тоже легко присвоить переменной.
Javascript
1
2
3
4
var abc = () => {
*код функции*
}
abc();
0
kalabuni
Нарушитель
3313 / 2625 / 630
Регистрация: 18.04.2012
Сообщений: 7,934
19.11.2018, 23:02 3
Marchuk,ещё обращу ваше внимание на то, что способ определения функции определяет её доступность в текущем скриптовом блоке, пример поможет разобраться:
PHPHTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script>
function func0 (){alert (0);}
</script>
 
<script>
var func1 = function () {alert (1);}
func0  (); // увидите нолик, так как функция func0 определена в предыдущем блоке
func1 (); // увидите единичку, так как переменная func1 определена выше по коду в текущем блоке
func2 () //  не сработает, так как переменная func2 в коде ещё не определена
func3 (); // увидите тройку, так как функция func3 определена в текущем блоке, пусть и ниже по коду
func4 (); // не сработает, так как функция func4 НЕ определена в текущем блоке
var func2 =  function () {alert (2);}
function func3 () {alert (3);}
</script>
 
<script>
function func4 () {alert (4);}
</script>

PS. коллега amr-now позабыл ещё об одном способе определения функции
Javascript
1
2
3
 // фигурные скобки для тела функции вовсе не используются, и вообще скобок минимум
var func = new Function ("x", "alert (x)");
func (5);
0
Qwerty_Wasd
1206 / 883 / 439
Регистрация: 16.04.2016
Сообщений: 2,383
Завершенные тесты: 2
19.11.2018, 23:59 4
Ну и до кучи подброшу
Javascript
1
2
3
4
5
6
7
8
9
function F(){}; // объявление функции
var F = function(){}; // функциональное выражение
var F = (function(){}); // функциональное выражение с группирующими операторами
var F = function foo(){}; // именованное функциональное выражение
var F = (function(){ // немедленно исполняемое функциональное выражение (IIFE), которое возвращает функцию
    return function(){}
})();
var F = new Function(); // конструктор Function 
var F = new function(){}; // конструктор объекта
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2018, 23:59

Объявление функции в файле
Здравствуйте! Помогите, пожалуйста! на сайте не работают некоторые модули, не отображаются......

Вызов функции из другой функции после нажатия на кнопку
Помогите, пожалуйста! Никак не могу понять почему не запускается функция d() Полный код: &lt;script...

Вызов функции, находящейся в другой функции
Добрый день! Есть такая функция: function func1(p1, p2) { function func2() {alert(1);} ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru