在直接匿名函数中包装函数定义是否有任何优势?
以下是jsfeat库中的示例:
var get_channel = (function () {
return function(type) {
return (type & 0xFF);
}
})();
或者只是做以下事情会更好吗?
var get_channel = function(type) {
return (type & 0xFF);
};
在这种情况下,似乎没有优势支持第一个版本:
答案 0 :(得分:2)
有一些优点,但在您提供的示例中看不到它们。优点是你可以
例如,您可以像这样制作跨浏览器 XHR功能
var XHR = (function () {
if (window.XMLHttpRequest)
return function () {
return new XMLHttpRequest();
};
else
return function () {
return new ActiveXObject("Microsoft.XMLHTTP");
};
}());
现在,XHR
的未来调用不需要计算if
逻辑,无论如何它总是相同的。