Javascript:为什么我调用此代码时没有抛出错误?

时间:2012-06-13 16:52:19

标签: javascript html5 syntax canvas

我正在使用HTML画布并使用Javascript在其上写一些文本。

在这样做时,我做了一个简单的错误,花了我一些时间才找到。我写道:

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

等号阻止了我预期的行为。但有一件事我没有得到:为什么这段代码在Chrome的Javascript控制台中没有给我错误?

这是有效的Javascript吗?如果是:你能解释代码在等号出现时的作用吗?

3 个答案:

答案 0 :(得分:6)

是的,这是有效的Javascript。它使用的是comma operator,它只是评估左边的表达式,然后是右边的表达式,并返回右边的表达式的值。

由于表达式"My message"x-coord没有副作用,因此它与以下内容相同:

context.fillText = y-coord;

或者:

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

答案 1 :(得分:4)

comma operator评估每个表达式并返回最后一个表达式,因此右侧正在评估:

y-coord 

...并且context.fillText设置为等于它。

答案 2 :(得分:1)

如果你问的是

之间的区别

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

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

答案是你将=符号右侧的表达式赋给context.fillText,因此试图覆盖方法本身,而不是用参数调用它。