奇怪的Javascript对象初始化?

4

我最近在一个WebGL教程中看到了这样的变量初始化:

var mouse = { x: 0, y: 0 }, INTERSECTED;

我从未见过这种格式。我知道它正在创建一个带有x和y属性的对象,但INTERSECTED与变量/对象有什么关系呢?

谢谢!


3
我认为 INTERSECTED 只是被初始化了,就像 var INTERSECTED; - Austin Brunkhorst
更多信息请参见http://en.wikipedia.org/wiki/Comma_operator。 - elclanrs
@elclanrs:实际上这不是逗号运算符。只是var语句使用了与分隔符相同的字符。 - I Hate Lazy
我对StackOverflow还比较陌生- 重命名我的问题为“多个混合类型变量初始化”之类的标题是否是一个好主意,以便其他人在将来更容易找到? - rob-gordon
给出一个维基百科文章的链接,说明它不是什么,这似乎有些奇怪。 - I Hate Lazy
显示剩余2条评论
4个回答

9

这行代码只是声明了两个变量(mouseINTERSECTED),并将mouse初始化为{ x: 0, y: 0}

INTERSECTED不一定与mouse相关,但是清晰的代码应该只在高度相关的情况下一起声明多个变量(即使在这种情况下,许多人仍然更喜欢将每个变量都声明在一个单独的行中)。


它们在脚本中高度相关,我想这就是让我困惑的原因。谢谢你的回答! - rob-gordon

3
我可能会理解错误,但我认为这就像是...
var A=3,B;

定义了 A 的值为 3,B 则未初始化。 INTERSECTED 只是另一个变量。


3

INTERSECTEDmouse无关。它只是一种初始化两个变量的简单方式。我猜测INTERSECTED是为了将其视为局部变量。


0

只是想加入我的意见:通常的约定是将它们写在两行上,这肯定可以避免任何混淆:

var mouse = { x: 0, y: 0 },
    INTERSECTED;

(还要注意的是,惯例是使用四个空格缩进,这样可以很好地对齐变量)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接