Question: I saw this code and I'm scratching my head trying to decide how it works.

```
<SCRIPT LANGUAGE=javascript> 

     function SpeechMikeControl::SPMEventButton(lDeviceID, EventId) {
        alert("lDeviceID=" + lDeviceID + ", EventId=" + EventId);
     }

</SCRIPT>

```

double colon? This is from using a philips speech mike from a web page.

Any idea what this double colon means? It seems like a syntax error to me but it works! (at least in IE).

Answer: 
This is an extension to the Javascript language implemented by Microsoft. It's purpose is to specify an event handler for a COM object referenced on the page. `SpeechMikeControl` is the globally-scoped name of the COM (and/or ActiveX) object:

* either with an `OBJECT` or some other element, which has an `id` property of `SpeechMikeControl`, or
* a global variable `SpeechMikeControl` declared somewhere previously in the Javascript

`SPMEventButton` is the name of the COM event which will be raised by the `SpeechMikeControl` object under who-knows-what circumstances. 

The double colon is an instruction to connect the function body as a handler to the control's event.
As mentioned in this answer of [What does ‘::’ (double colon) do in javascript?](https://stackoverflow.com/a/31180878/496103)

`::` is a ES2016 operator that is shorthand for bind. This answer intends to assist those that have encountered `::` since the ES2016 spec, however, does not apply to the context in which this question was asked.