2012-06-25 11 views
-1

Я пытаюсь написать JavaScript Self-Executing Anonymous Functionто, что случилось с моей прямоприменяемой анонимной функцией в JavaScript

window.App = window.App || {} 

    (function (global) { 
     global.test = function() { 
      console.log('test'); 
     } 
    })(App); 

$(function() { 
    App.test(); 
}) 

но огнь ошибку сказать мне: ({}) is not a function

тогда я пытаюсь переместить (app) в, как:

(function (global) { 
    global.test = function() { 
     console.log('test'); 
    } 
}(App)); 

то поджигатель скажи:

App is not defined 

Так что с моим кодом что-то не так? Как я могу сделать это правильно?

вот demo

+0

Этот код выглядит немного странно для меня так Я не буду давать ответа, но не должен ли быть какой-то код между фигурными фигурными скобками в первой строке? –

+0

@JezenThomas no, {} - это просто способ создания пустого объекта. Вы можете видеть, что он передается в функцию как * global *, где он получает определенный на нем метод * test *. – McGarnagle

+0

Это хороший пример для проблем с установкой точки с запятой в дикой природе. Дети, никогда не забывайте свою точку с запятой! – kioopi

ответ

7

Попробуйте это:

window.App = window.App || {}; 

Вы пропускаете точку с запятой там!

+0

JavaScript выполняет автоматическую вставку с запятой в конце каждой строки, если это не приводит к синтаксической ошибке. Две линии должны быть эквивалентными. – cdhowie

+0

Тогда вы были бы удивлены! – Amberlamps

+0

@cdhowie Не всегда, и это прекрасный случай и точка. – Trevor

1

точку с запятой в вашем первом ряду

window.App = window.App || {}; 

JS думал, что круглые скобки по строке 3 была частью вашего нового пустого объекта на строке 1.

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