浏览今天d3 source code我看到了下面一行:这个复杂的return语句在javascript中做了什么?
return delay <= elapsed ? start(elapsed) : d3.timer(start, delay, time), 1;
我一直在做日常的JavaScript多年,从来没有看到过。嘿?
浏览今天d3 source code我看到了下面一行:这个复杂的return语句在javascript中做了什么?
return delay <= elapsed ? start(elapsed) : d3.timer(start, delay, time), 1;
我一直在做日常的JavaScript多年,从来没有看到过。嘿?
它只是小于或等于。也许Ternary operator加上comma operator是什么让你失望?
这相当于此:
if (delay < elapsed) start(elapsed);
else if (delay === elapsed) start(elapsed);
else {
d3.timer(start, delay, time);
}
return 1;
哇。我发布了这个消息,在洗澡时立即意识到**当然**我知道什么是大于或等于平均值。非常抱歉。有一张Frieda Khalo与Leon Trotsky一起在我的道歉中露面:http://awesomepeoplehangingouttogether.tumblr.com/image/32307958593 –
因此,它总是返回1,因为逗号具有更高的优先级,并将a分组?b:c表达式? ? – Paul
@GeorgeMauer碰巧:)并不感到惊讶。是的,逗号运算符不会经常出现。我实际上认为它是由D3包装商添加的,但它看起来也是在原始来源中。尽管如此,我认为它不会带来太多好处。 – loganfsmyth
仅仅表示 “小于或等于”。
< =表示不太平等。
整条生产线你贴手段用简单的英语“,如果延迟小于经过,返回开始(经过),否则返回d3.timer的价值。
@irrelephant是的,当然。谢谢,我纠正了这一点。 – Philipp
逗号运算符更改返回值。 – irrelephant
这意味着如果的左手操作数是小于或等于右手操作数在近(如果不是全部)语言
http://www.w3schools.com/js/js_comparisons.asp这些都是在每周的使用更JavaScripts比每日ES。可能是你之前没遇到过的原因。 – user93353
你的代表..这个问题.. – iKlsR
是的,总脑屁。一直忙着吃圣诞节。我会删除这个,但loganfsmyth值得点。 –