This question already has answers here:
Different ways to execute IIFE?
(2个答案)
5年前关闭。
我一直在使用以下内容来开始为IIFE填写代码:
有时我会看到以下用法:
哪个是正确的?
(2个答案)
5年前关闭。
我一直在使用以下内容来开始为IIFE填写代码:
(function() {
/* code goes here */
}());
有时我会看到以下用法:
(function() {
/* code goes here */
})();
哪个是正确的?
最佳答案
根据Douglas Crockford(jslint的创建者)的说法,当另一个开发人员读取您的代码时,第一个错误较少出现。但是并不是每个人都必须尊重这一点,尽管很好地知道存在的内容以及原因,但这两者都很好。
当要立即调用一个函数时,整个调用
表达式应该用括号括起来,这样很明显
产生的价值是功能的结果,而不是
功能本身。
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);
}
}
}; }());
关于javascript - 什么是正确的JavaScript IIFE模板? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26680361/
10-12 17:58