2009-10-05 61 views
18

一些的JavaScript API的文檔顯示下列片段作爲如何調用一些功能的例子:'::'(雙冒號)在JavaScript中做什麼?

<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> 

其他怪異的東西,至少//看起來就像是錯誤的。

所以我想這不是一些我不知道的新奇語法,但也許這些例子只是缺少一個字符串參數引號。

+1

據我所知,這是一個錯字。在這種使用雙冒號是沒有意義的。 – 2009-10-05 14:19:55

+0

你能告訴我們更多關於你正在使用的javascript API的信息嗎? – Xinus 2009-10-05 14:24:00

+0

鏈接到上述說明文件? – 2009-10-05 14:28:16

回答

13

沒有。這是一個語法錯誤。

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

是的,除非由於某些不合理的原因,開發人員實際上是解析onclick用'document.getElementsByTagName('button')[0] .getAttribute('onclick')'提取屬性值並提取該信息,這是一個無效的ECMAScript表達式。 – 2009-10-05 14:30:39

+1

@Brann - 它在問題中給出的上下文中似乎不是有效的。 – Quentin 2016-07-03 15:04:43

+0

@Pawel - 不,它不是。看到我以前的評論。查看問題的上下文。 – Quentin 2017-07-14 14:10:32

2

在哪個示例中,您是否看到這個示例?到目前爲止,JavaScript沒有雙冒號操作符!

雙冒號替換了CSS3中僞元素的單冒選擇器,以便明確區分僞類和僞元素。但是,這是CSS3,而不是JavaScript!一點也不!

+0

鑑於此,這聽起來像也許他正在尋找一個jQuery選擇器,並省略參數周圍的引號。可能是 – 2009-10-05 14:23:55

+0

。無論如何,這個問題比我想象的要引起更多的關注。 – 2009-10-05 14:48:49

1

也許這是一個錯字,整個事情預計將在引號。

7

::與參數的數量無關。你能做到這一點已經在JavaScript中有一個正常的逗號:

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

SomeFunction('oneParam'); // Perfectly legal 

此外,基於Tzury酒吧Yochay的答案,你確定你不是在找什麼東西像下面?

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

我想你是對的,它缺少引號。我將向作者提交一個錯誤報告:) – dtb 2009-10-05 14:26:56

0

我猜foo.DoIt()的參數列表是由代碼生成的,其中一個值爲空。

2

它必須是

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

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

這當然不是你的問題的時間的情況下,但現在::是一個有效的ES7運營商。這實際上是一個綁定的捷徑。

::foo.bar 

相當於

foo.bar.bind(foo) 

例如見的解釋here

+1

如果我正確地閱讀它,那麼它在問題中給出的上下文中無效。問題中的:: ::的LHS和RHS是Numbers。 – Quentin 2015-07-27 07:49:27

+24

這是我尋找的答案,當我谷歌搜索什麼::意味,但!謝謝 – poshaughnessy 2015-07-30 13:46:02

+2

這個答案與問題無關,因爲(1)2016年6月發佈的ES7不包含'::'運算符; (2)'::'運營商目前只是0階段提案,很可能會被更改或刪除; (3)在問題的上下文中,它不是一個有效的'::'操作符語法,甚至正確的語法在任何當前的主流瀏覽器中都不起作用。 – rhgb 2016-11-14 08:44:26

相關問題