瀏覽今天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值得點。 –