有人可能会解释这两个代码片段之间的区别吗?有没有真正的功能差异?一个优于另一个吗?
isIPad = function() {
return navigator.userAgent.match(/iPad/i) != null;
};
isIPad = (function isIPad() {
return navigator.userAgent.match(/iPad/i) != null;
}());
答案 0 :(得分:2)
第一个变量将存储一个函数,它将返回一个布尔值,具体取决于该设备是否为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;
哪个内存比其他任何选项都更有效。