4

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

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

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

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

这是有效的 Javascript 吗?如果是:你能解释一下当等号存在时代码会做什么?

4

3 回答 3

6

是的,这是有效的 Javascript。它使用逗号运算符,它只计算左边的表达式,然后计算右边的表达式,然后返回右边的表达式的值。

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

context.fillText = y-coord;

或者:

"My message"; // Does nothing
x-coord;      // Does nothing
context.fillText = y-coord;
于 2012-06-13T16:56:26.823 回答
4

逗号运算符计算每个表达式并返回最后一个,因此右侧的计算结果为:

y-coord 

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

于 2012-06-13T16:55:50.700 回答
1

如果您要询问两者之间的区别

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

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

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

于 2012-06-13T16:59:14.777 回答