2016-10-09 21 views
3

Извините за ужасное название, как только люди дадут мне какое-то направление, я могу изменить его лучше на будущее.В чем разница между {}()) и {})()

я в основном любопытно, что разница между

(function() { 
    return false; // logs false 
}()); 

and 

(function() { 
    return false; // Also returns false 
})(); 

, они оба, кажется, дают мне тот же результат в консоли, но я уверен, что должна быть разница, может кто-нибудь сказать мне разница и почему вы будете использовать один над другим?

ответ

3

Как и в другой ответ, нет функциональной разницы

Однако, если вы в ES2015, и использовать IIFE стрелки функция стиля

(() => { 
    return false; // logs false 
})(); 

работы, однако эта версия:

(() => { 
    return false; // logs false 
    }()); 

нет - js двигатель жалуется на отсутствие) в скобках

1

Нет разницы - всего два разных способа написания IIFE (выражение с выраженным выражением функции) в Javascript. Какой бы вы ни выбрали, это выбор конвенции.

(Если Вам необходима дополнительная информация о IIFE годах в Javascript, есть большой SO here.)

0

Любой из следующих двух шаблонов может использоваться для IIFE, используя контекст выполнения функции для создания «конфиденциальности».

(function(){ /* do something */ }()); // Douglas Crockford recommends 

(function(){ /* do something */ })(); // This way works as well 

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

При выполнении задания используются условия соглашения о кодировании, использующие их.

+0

'Douglas Crockford рекомендует ... почему' - потому что он думает, что final'() 'in'})() 'похоже, что он болтается там, как шары для собак, - серьезно, его слова - слишком плохой ES2015 + Работа! –

+0

Да, как я уже говорил, государства конвенции позволяют им болтаться .. у вас есть точка;) – Abs

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