2012-06-13 32 views
4

我正在玩弄HTML畫布,並使用Javascript在其上書寫一些文字。Javascript:爲什麼當我調用這段代碼時不會拋出錯誤?

雖然這樣做,我做了一個簡單的錯誤,花了我一些時間來找到。我寫道:

context.fillText = ("My message", x-coord, y-coord); 

等號阻止我預期的行爲。但有一件事我沒有得到:爲什麼此代碼不會給我在Chrome的Javascript控制檯中的錯誤?

這個有效的Javascript?如果是的話:你能解釋一下當等號出現時,代碼的作用嗎?

回答

6

是的這是有效的Javascript。它使用comma operator,它只評估左側的表達式,然後右側的表達式並返回右側的表達式。

由於表達"My message"x-coord有沒有副作用,它是一樣的:

context.fillText = y-coord; 

或者:

"My message"; // Does nothing 
x-coord;  // Does nothing 
context.fillText = y-coord; 
+0

嗨,我只是注意到,我甚至沒有說「謝謝你」,所以:謝謝你回答我的問題。我現在明白了,明白那個操作員:-) – AndreKuntze

4

comma operator評估每個表達式並返回最後,所以右手邊正在評估只是:

y-coord 

...和context.fillText設置等於它。

1

如果你問的是差異

之間

context.fillText = ("My message", x-coord, y-coord);

and

context.fillText("My message", x-coord, y-coord);

答案是,你分配體現了=標誌context.fillText的權利,因此,試圖覆蓋方法本身,而不是帶參數調用它。

+0

爲什麼downvote? –

+1

我不認爲這回答了這個問題,但我沒有倒下。 – Matt

+0

不夠公平,但無論我重讀這個問題的次數多少,他都不會詢問逗號運算符的位置,而是詢問等號在做什麼。 'context.fillText'是一個函數,所以應該用圓括號調用,而不是分配給表達式... –

相關問題