2015-11-06 89 views
0

有人可能可以解释这两个代码片段之间的区别吗?有没有真正的功能差异?一个人比另一个人高吗?有人可以解释这两个JS代码片段之间的区别吗?

isIPad = function() { 
    return navigator.userAgent.match(/iPad/i) != null; 
}; 


isIPad = (function isIPad() { 
    return navigator.userAgent.match(/iPad/i) != null; 
}()); 
+2

1)分配函数本身; 2)赋值函数的返回值 – hindmost

+1

每当你看到括号'()',就表示函数正在执行,某个值正在被返回..返回的值可能是任何东西..你可能会发现[this](http:// www .kirupa.com/html5/closures_in_javascript.htm)有趣! – Rayon

回答

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; 

这将是更多的内存比任一其它选项高效。

相关问题