Какова цель самостоятельного выполнения функции в JavaScript?

В файл main.cpp входят файлы, которые включают shape.cpp, который в конечном итоге включается несколько раз. Вы можете избежать этого, обернув ваши включенные файлы проверкой на определение:

#ifndef SHAPE_CPP
#define SHAPE_CPP

//file contents

#endif
401
задан thatpaintingelephant 4 January 2016 в 08:07
поделиться

8 ответов

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

, Например:

(function(){ 
    var foo = 3; 
    alert(foo); 
})(); 

alert(foo); 

Это сначала предупредит "3" и затем бросит ошибку на следующее предупреждение, потому что нечто не определяется.

378
ответ дан Steve Bennett 4 January 2016 в 08:07
поделиться

IIRC это позволяет Вам создавать частные собственности и методы.

-2
ответ дан Ólafur Waage 4 January 2016 в 08:07
поделиться

Одно различие - то, что переменные, которые Вы объявляете в функции, локальны, таким образом, они уходят, когда Вы выходите из функции, и не конфликтуют с другими переменными в другом коде.

3
ответ дан Guffa 4 January 2016 в 08:07
поделиться

Пространство имен. Объемами JavaScript является функциональный уровень.

19
ответ дан Christoph 4 January 2016 в 08:07
поделиться
  • 1
    ^^ согласован. Я can' t видят любые проблемы только с отъездом его, как, и использование < script> var obj1 =" somevalue" </script> подход, это - лучший способ, и я верю - правильный путь. – Dal Hundal 3 February 2010 в 22:40

Так как функции в JavaScript являются первоклассным объектом путем определения его тот путь, он эффективно определяет "класс" во многом как C++ или C#.

, Что функция может определить локальные переменные и иметь функции в нем. Внутренние функции (эффективно методы экземпляра) будут иметь доступ к локальным переменным (эффективно переменные экземпляра), но они будут изолированы от остальной части сценария.

1
ответ дан James Curran 4 January 2016 в 08:07
поделиться
  • 1
    Если Вы don' t хотят зависеть от идентификационного атрибута, можно также сделать Ваш helper.js, цикл сценария через весь script наклеивает страницу, ища ту с scr="helper.js", и затем извлеките data-name. – jvannistelrooy 12 March 2014 в 20:26

Изоляция объема, возможно. Так, чтобы переменные в объявлении функции не загрязняли внешнее пространство имен.

, Конечно, на половине реализаций JS там, они будут так или иначе.

6
ответ дан chaos 4 January 2016 в 08:07
поделиться

Существует ли параметр, и "Набор кода" возвращает функцию?

var a = function(x) { return function() { document.write(x); } }(something);

Закрытие. Значение something привыкает функцией, присвоенной a. something мог иметь некоторое переменное значение (для цикла) и каждый раз новой функции.

7
ответ дан stesch 4 January 2016 в 08:07
поделиться

Самопризвание (также известное как автозапуск) - это когда функция исполняется сразу после его определение. Это основной шаблон и служит основой для многих другие шаблоны JavaScript разработка.

Я большой поклонник :) этого, потому что:

  • Он сводит код к минимуму
  • Он обеспечивает разделение поведения от представления
  • Он обеспечивает закрытие, которое предотвращает конфликты имен

Чрезвычайно - ( Почему вы должны говорить, что это хорошо?)

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

Подробнее здесь .

33
ответ дан 22 November 2019 в 23:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: