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

dtb*_*dtb 27 javascript syntax

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

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

<button type="button" onClick="foo.DoIt(42342::37438)">Click</button>
Run Code Online (Sandbox Code Playgroud)

:: 这里显然使用了允许将一个或两个参数传递给函数.

是什么::在JavaScript中吗?

如果一个或两个值通过,函数如何知道?它是如何读取它们的?


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

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

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

至少//看起来错了.

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

Bra*_*ann 235

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

::foo.bar
Run Code Online (Sandbox Code Playgroud)

相当于

foo.bar.bind(foo)
Run Code Online (Sandbox Code Playgroud)

请参阅此处的解释以获取示例:

  • 当我用Google搜索:::的意思时,这就是我正在寻找的答案!谢谢 (43认同)
  • 问题标题与问题正文不符,但是,这个答案适合标题问题,在我的情况下我正在寻找什么. (3认同)
  • 这个答案与这个问题无关,因为(1)2016年6月发布的ES7不包含`::`运算符; (2)`::`运算符目前只是一个0阶段提案,极有可能被更改或删除; (3)在问题的上下文中,它不是有效的`::`运算符语法,即使正确的语法也不适用于任何当前的主流浏览器. (2认同)

Que*_*tin 17

没有.这是一个语法错误.

>>> alert(42342::37438)
SyntaxError: missing ) after argument list
Run Code Online (Sandbox Code Playgroud)

  • 是的,除非出于一些不道德的原因,开发人员实际上正在使用`document.getElementsByTagName('button')[0] .getAttribute('onclick')`解析onclick属性值并提取该信息,这是一个无效的ECMAScript表达式. (3认同)

Joe*_*orn 7

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

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

SomeFunction('oneParam'); // Perfectly legal
Run Code Online (Sandbox Code Playgroud)

另外,根据Tzury Bar Yochay的回答,你确定你没有看到类似下面的内容吗?

$('this::is all one::parameter'); // jQuery selector
Run Code Online (Sandbox Code Playgroud)