在the MDN page for the wheel
event上,有一个代码示例,其中包含第30-31行的以下内容:
function( originalEvent ) {
!originalEvent && ( originalEvent = window.event );
第二行似乎采用了许多依赖于JavaScript在内部评估布尔表达式的方式的快捷方式。如果我理解正确,如果没有传递参数,其目的是将originalEvent
设置为window.event
。其行动与以下内容相同:
if (!originalEvent) {
originalEvent = window.event;
}
或
orginalEvent = (originalEvent) ? orginalEvent : window.event;
使用MDN网站的结构有什么优势?
答案 0 :(得分:0)
使用MDN网站的结构有什么优势?
看起来很酷。
我会说简洁,但下面的内容同样简短,一目了然,发生了什么:
function(originalEvent) {
if(!originalEvent) originalEvent = window.event;
}
请注意,他们的样本不依赖于任何“内部”操作顺序或任何险恶的东西。运算符短路(这就是所谓的)是许多语言中非常明确和流行的部分,其中Javascript只是一个例子。您可以在C中编写相同的确切语句,它可以正常工作。
答案 1 :(得分:0)
MDN没有完全优于您建议的方式。这是一种风格问题。
你提到的所有方式完全相同。
MDN的方式更加“简洁”,但其他人更喜欢if...else
语句,就像您为了可读性目的而提到的语句。取决于具体情况,但我认为在大多数情况下,选择一种或另一种是风格问题,而不一定是optimization。
答案 2 :(得分:0)
要添加更多默默无闻,您还可以使用
function(originalEvent) {
originalEvent = originalEvent || window.event;
}
没有正确的方法可以做到这一点,而且它们都是完全有效的,我经常使用上面的那个,因为我认为它更容易阅读(尽管许多人会因此而动摇我的拳头)。 我也相信你可以通过默认设置获得所有方法来通过大多数JSLint'ers,所以这真的是风格问题。