2016-06-14 4 views
2

code1:В чем разница между ниже двух стилей кода

var x=(function(){ 
    return { 
    greet:function(){ 
     alert('Hello from code1'); 
    } 
    }; 
})(); 

Кодекса2:

var x=function(){ 
    return { 
    greet:function(){ 
     alert('Hello from code2'); 
    } 
    }; 
}(); 

Оба будут вызываться как:

x.greet(); 

В стиле 1 я закрытом функция самоиспускания в скобках, а во втором - нет. Оба работают одинаково. Так в чем же разница между кодом1 и кодом2 и который исправлен?

+0

В качестве примечания - я изначально предполагал, что это закрыто как «в основном основанное на мнениях», но осознанное впоследствии, в то время как ответ может быть «его мнением», сам вопрос может быть определен конкретно. – Krease

+0

Нет, они разные. Первый будет * запускать * функцию, затем назначить ее 'x', а второй присваивает' function' функции 'x', а затем запускает' x'. Это можно проверить, когда функция ничего не возвращает. – choz

ответ

5

Нет практической разницы. Некоторые люди предпочитают один путь друг за другом, аналогично предпочтению размещения открывающих фигурных скобок на одной и той же строке или следующей строке или вкладок или пробелов или записи x=1+2 вместо x=(1+2).

Дополнительные круглые скобки могут добавлять ясность или беспорядок, в зависимости от предпочтений стиля.

2

Существует минимальная разница между двумя примерами. Оба создают переменные из возвращаемого значения сразу вызываемых функций. Первый заключен в круглые скобки, в качестве выражения, второй - это функция, которая немедленно вызывается. См. Также What do parentheses surrounding a object/function/class declaration mean?

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

  • Нет связанных вопросов^_^