有人可以解释这两个JS代码片段之间的区别吗?
问题描述:
有人可能可以解释这两个代码片段之间的区别吗?有没有真正的功能差异?一个人比另一个人高吗?有人可以解释这两个JS代码片段之间的区别吗?
isIPad = function() {
return navigator.userAgent.match(/iPad/i) != null;
};
isIPad = (function isIPad() {
return navigator.userAgent.match(/iPad/i) != null;
}());
答
第一可变将存储函数将返回取决于该设备是否是一个iPad一个布尔值。
var thisIsAnIPad = isIPad()
if(thisIsAnIPad) {
console.log('This is an iPad!');
}
第二可变计算直线距离,并将其存储在布尔结果。您可以马上使用该值。
if(isIPad) {
console.log('This is an iPad!');
}
这两种方法都没有客观上的优越性。它们都有不同的用例。例如,如果您只想知道用户是否在iPad上,那么您可以使用第二个选项。
如果它是一个值,您将需要重新计算多次(也许用户代理正在更改?),那么第一个选项是更可取的。
然而,第二种方法可以简化为
isIPad = navigator.userAgent.match(/iPad/i) != null;
这将是更多的内存比任一其它选项高效。
1)分配函数本身; 2)赋值函数的返回值 – hindmost
每当你看到括号'()',就表示函数正在执行,某个值正在被返回..返回的值可能是任何东西..你可能会发现[this](http:// www .kirupa.com/html5/closures_in_javascript.htm)有趣! – Rayon