我一直在使用以下内容开始填写IIFE的代码:
(function() {
/* code goes here */
}());
我偶尔会看到以下内容:
(function() {
/* code goes here */
})();
哪个是正确的?
答案 0 :(得分:1)
根据Douglas Crockford(jslint的创建者)的说法,当另一个开发人员读取您的代码时,第一个不易出错。但并不是每个人都必须尊重这一点,虽然知道存在的是什么以及为什么会很好,但两者都很好。
当要立即调用函数时,整个调用 表达应该用parens包裹,以便明确表示 产生的价值是功能的结果,而不是 功能本身。
var collection = (function () { var keys = [], values = []; return { get: function (key) { var at = keys.indexOf(key); if (at >= 0) { return values[at]; } }, set: function (key, value) { var at = keys.indexOf(key); if (at < 0) { at = keys.length; } keys[at] = key; values[at] = value; }, remove: function (key) { var at = keys.indexOf(key); if (at >= 0) { keys.splice(at, 1); values.splice(at, 1); } } }; }());
答案 1 :(得分:0)
纯粹是一种审美偏好。使用类似的东西。道格拉斯·克罗克福德(Douglas Crockford)努力推广第一个,但我经常看到第二个。