Вопрос:

Почему функция в круглых скобках?

javascript

76 просмотра

2 ответа

1372 Репутация автора

Вопрос:

Почему функция заключена в скобки? Я взял этот код из скобок, и он работает без проблем.

В чем преимущество наличия кода в (function () {... Code Here ...}) (); как в следующем примере?

Код:

(function() {
    "use strict";
    // Doesn't work because strict mode 
    // enforces the fact that the second example shouldn't work
    if (true) {
        function fn1() {
            // This won't run
            console.log("doesn't work -- have a great Die Hard Day XIII");
        };
        fn1();
    }
})();

Код здесь: что будет посылать слово JQuery в качестве параметра для этого пространства имен. Я знаю, что причина, по которой функция заключена в (...), заключается в создании пространства имен. Я думаю, что лучший вопрос был бы о том, почему нужно передать переменную, но я бы предположил, что это произойдет, если переменная понадобится другому пространству имен.

( function( $ ) {
    // Init Skrollr
    var s = skrollr.init({
        render: function(data) {
            //Debugging - Log the current scroll position.
            //console.log(data.curTop);
        }
    });
} )( jQuery );
Автор: Doug Hauf Источник Размещён: 02.07.2014 01:50

Ответы (2)


7 плюса

178746 Репутация автора

Решение

Я взял этот код из скобок, и он работает без проблем.

Это не правильно; он не может работать (или даже анализироваться) сам по себе. JavaScript видит functionместо, где может быть объявление функции, и предполагает, что это объявление функции. Круглые скобки используются для того, чтобы контекст был выражением. Эта практика является излишней, если она однозначно является литералом функции, скажем, в объявлении переменной, но многие считают ее более читабельной. Там есть опция jsHint , чтобы обеспечить его , например.

Автор: Ry- Размещён: 02.07.2014 01:53

1 плюс

98406 Репутация автора

Потому что тогда они называют это:

(function() { ... })();
                    ^^
Автор: Jonathon Reinhart Размещён: 02.07.2014 01:53
Вопросы из категории :
32x32