Подтвердить что ты не робот

Что делает ":: (двойной двоеточие) в 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>

По крайней мере, // выглядит просто неправильно.

Поэтому я предполагаю, что это не какой-то фантастический новый синтаксис, о котором я не знаю, но, возможно, в примерах просто отсутствуют кавычки вокруг одного строкового аргумента.

4b9b3361

Ответ 1

Ничего. Это синтаксическая ошибка.

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

Ответ 2

Это было не так во время вашего вопроса, но прямо сейчас: - действительный оператор ES7. Это на самом деле ярлык для привязки.

::foo.bar

эквивалентно

foo.bar.bind(foo)

См. объяснение здесь, например:

Ответ 3

:: не имеет ничего общего с количеством параметров. Вы можете сделать это уже в JavaScript с обычной запятой:

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

SomeFunction('oneParam'); // Perfectly legal

Также, на основе ответа Tzury Bar Yochay, вы уверены, что не смотрите на что-то вроде следующего?

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

Ответ 4

В каком примере вы это видели? До сих пор JavaScript не имеет оператора двойной толчки!

Двойной двоеточие заменяет селекторы с одной колонкой для псевдоэлементов в CSS3, чтобы сделать явное различие между псевдоклассами и псевдоэлементами. Но это CSS3, а не JavaScript! Не ВСЕ!

Ответ 5

Это должна быть опечатка для

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

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

Ответ 6

Возможно, это опечатка, и все это ожидается в кавычках.

Ответ 7

Он может использовать ECMAScript для XML (стандарт ECMA-357), что подразумевает, что двойные кавычки являются оператором XPath.

См. ECMAScript для XML

Ответ 8

Я предполагаю, что список параметров для foo.DoIt() генерируется кодом, а один из значений пуст.