2014-11-07 4 views
-1

Я задаюсь вопросом, почему это работаетЗаявленный функция JavaScript, Вызывающего себя

(function Test() { 
    alert('x'); 
}()) 

, но это не работает

function Test() { 
    alert('x'); 
}() 

Как внешняя скобка изменить приоритет вещей и заставить его работать?

+0

Любое утверждение, которое ** начинается с ** 'function', является объявлением функции *, и не может быть вызвано. Если функция появляется в выражении *, это выражение функции и может быть вызвано. Запуск инструкции с помощью paren делает ее выражением. Вы также можете выполнить функцию '! Function Test() {alert (x)}()', но это менее распространенный взлом, чем обертывание всего в parens. –

+0

Взгляните на [определения функций] (http://www.w3schools.com/js/js_function_definition.asp) в ** Функции самозапускания ** часть – dazedconfused

+0

P.S. Удалите тег jQuery. –

ответ

-1

Вы можете представить круглые скобки, чтобы они были явными в отношении того, что вы делаете. Например, когда вы выполняете некоторую операцию, например, 3 * 2 + 4 или 3 * (2 + 4). Когда вы

function Test() { alert('x'); }() 

Мореплаватель просто увидеть 2 скобку в одиночку, тогда, когда вы делаете

(function Test() { alert('x'); }()) 

Это видеть, что Вы хотите, чтобы выполнить эту функцию.

Смежные вопросы