2010-01-27 52 views
6

我想升級我的JavaScript編程技能(或者可以說,我的編程技巧期間:))JavaScript的語義

,所以我想了解一些語義:

在第一線什麼是

「? 「意思以及在「距離d」減號

在第二行

是什麼「+ =」或「 - ?=」的意思是

el.css(ref, motion == 'pos' ? -distance : distance) 

animation[ref] = (mode == 'show' ? (motion == 'pos' ? '+=' : '-=') : (motion == 'pos' ? '-=' : '+=')) + distance; 

謝謝

+1

想提高你的編程技能?在你不知道它做什麼後,用**可讀**的方式重寫它,不會混淆下一個編碼器。 (順便說一句,它看起來像是完全廢話 - 它正在玩+/-的數字,然後減去或添加它,似乎毫無意義) – Kobi 2010-01-27 09:22:38

+0

是的,像這樣,'el.css(ref,-1 *('pos' ===運動)* distance)',:P(只是一個玩笑) – 2010-01-27 09:27:32

+0

@Dan:你想要'(1 - ('pos'=== motion)* 2)* distance'。 – kennytm 2010-01-27 09:29:11

回答

5

a ? b : c意味着「b如果a爲真,c否則「。

-a意味着a,否定。

a -= ba += b分別表示a = a - ba = a + b。但是,在您的示例中,這些運算符實際上並不存在於代碼中,它們只是代碼正在操作的文本字符串。

+0

在他的例子中,' - ='和'+ ='實際上是字符串。 – 2010-01-27 09:22:35

+0

@Brian:是的,只是發現:) – moonshadow 2010-01-27 09:24:24

+1

嗯......' - ='和'+ ='作爲字符串...我在某個地方聞到一個'eval'; – 2010-01-27 09:53:49

1

是三元?運營商

它等於

if(motion == 'pos') { return -distance; } else { return distance; } // - is just negating the distance value 
1
  1. (a ? b : c)的意思是 「返回b如果a是真實的,並返回c如果a是假的。」
  2. 減號表示否定。
  3. '+=''-='只是字符串。
0

這是一個鏈接,將回答?問題(?是簡寫評估操作)。 http://www.w3schools.com/JS/js_comparisons.asp

+ =將用於增加一個值(也簡寫爲) 例如,

i = i + 1; is the same as i += 1; 

同樣適用於 - =

+0

技術上我想這是正確的,但'' - =''與簡單的' - ='不一樣(這是一個發送給jQuery的css函數的字符串,但是在後臺執行此操作,所以我沒有投票給你) – 2010-01-27 09:30:30