JavaScript中的'::'(双冒号)有什么作用?

时间:2009-10-05 14:14:31

标签: javascript syntax

一些JavaScript API的文档显示了以下片段作为如何调用某些函数的示例:

<button type="button" onClick="foo.DoIt(72930)">Click</button>

<button type="button" onClick="foo.DoIt(42342::37438)">Click</button>
这里显然使用

::来允许将一个或两个参数传递给函数。

::在JavaScript中做了什么?

如果传递了一个或两个值,函数如何知道?它是如何读取的?


仔细看,这些例子展示了其他奇怪的东西,比如

<button type="button" onClick="foo.Bar(72//893)">Click</button>

<button type="button" onClick="foo.Qux(425;1,34::)">Click</button>

至少//看起来错了。

所以我想这不是一些我不知道的新奇语法,但也许这些例子只是缺少单个字符串参数的引号。

8 个答案:

答案 0 :(得分:220)

在你的问题当然不是这种情况,但是现在::是一个有效的ES7运营商。它实际上是bind的捷径。

::foo.bar

相当于

foo.bar.bind(foo)

See an explanation here例如:

答案 1 :(得分:17)

无。这是一个语法错误。

>>> alert(42342::37438)
SyntaxError: missing ) after argument list

答案 2 :(得分:7)

::与参数数量无关。您可以使用普通逗号在JavaScript中执行此操作:

function SomeFunction(param1, param2) {
   //...
}

SomeFunction('oneParam'); // Perfectly legal

另外,根据Tzury Bar Yochay的回答,您确定不会看到以下内容吗?

$('this::is all one::parameter'); // jQuery selector

答案 3 :(得分:2)

你在哪个例子中看到了?到目前为止,JavaScript没有双冒号运算符!

双冒号取代了CSS3中伪元素的单冒号选择器,以明确区分伪类和伪元素。但这是CSS3,而不是JavaScript!不是全部!

答案 4 :(得分:1)

一定是

的拼写错误
<button type="button" onClick="foo.DoIt('72930')">Click</button>

<button type="button" onClick="foo.DoIt('42342::37438')">Click</button>

答案 5 :(得分:1)

可能正在使用ECMAScript for XML(ECMA-357 standard),这意味着双引号是一个XPath运算符。

请参阅ECMAScript for XML

答案 6 :(得分:0)

也许这是一个错字,整个事情都应该在引号中。

答案 7 :(得分:0)

我猜测foo.DoIt()的参数列表是由代码生成的,其中一个值是空的。