一些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>
至少//
看起来错了。
所以我想这不是一些我不知道的新奇语法,但也许这些例子只是缺少单个字符串参数的引号。
答案 0 :(得分:220)
在你的问题当然不是这种情况,但是现在::
是一个有效的ES7运营商。它实际上是bind
的捷径。
::foo.bar
相当于
foo.bar.bind(foo)
答案 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运算符。
答案 6 :(得分:0)
也许这是一个错字,整个事情都应该在引号中。
答案 7 :(得分:0)
我猜测foo.DoIt()的参数列表是由代码生成的,其中一个值是空的。