8

私はこのコードを見て、それがどのように機能するかを判断しようと頭を悩ませています。

<SCRIPT LANGUAGE=javascript> 

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

</SCRIPT>

ダブルコロン?これは、Webページのフィリップススピーチマイクを使用したものです。

この二重コロンが何を意味するのか、何か考えはありますか?私には構文エラーのように見えますが、機能します。(少なくともIEでは)。

4

6 に答える 6

7

Microsoft Office Infopath 2003のスキャンしたマニュアルで、あいまいなリファレンスを見つけることができました。JScript構文のようです:

スクリプトIDとイベント名の間の区切り文字として二重コロンが使用されます

私の推測では、これはInternet ExplorerのECMAScript実装の一部ではありませんが、Microsoft Officeの実装に属しています(または所属していた)。

于 2011-04-19T11:11:25.807 に答える
6

これは、Microsoftによって実装されたJavascript言語の拡張です。これは、ページで参照されているCOMオブジェクトのイベントハンドラーを指定することを目的としています。 SpeechMikeControlCOM(および/またはActiveX)オブジェクトのグローバルスコープの名前です。

  • またはのプロパティOBJECTを持つ他の要素のいずれか、またはidSpeechMikeControl
  • SpeechMikeControl以前にJavascriptのどこかで宣言されたグローバル変数

SPMEventButtonSpeechMikeControlは、 who-knows-whatの状況下でオブジェクト によって発生するCOMイベントの名前です。

二重コロンは、ハンドラーとしての関数本体をコントロールのイベントに接続するための命令です。

于 2011-08-25T20:10:06.013 に答える
3

構文エラーだと確信してください

于 2011-04-19T10:55:43.587 に答える
3

この回答で述べたように、'::'(ダブルコロン)はjavascriptで何をしますか?

::バインドの省略形であるES2016演算子です。この回答は、ES2016仕様以降に遭遇した人々を支援することを目的として::いますが、この質問が行われた状況には適用されません。

于 2016-06-29T04:06:09.293 に答える
0

私はそれが有効なJavascript構文ではないと確信しています。

IEで動作するが他のブラウザでは動作しない場合は、IEがそれを別のスクリプト言語として扱っている可能性があります(おそらくVBScriptですか?二重コロン演算子があることも覚えていませんが?他の言語が何であるかはわかりませんが) 。)

于 2011-04-19T11:05:36.317 に答える
0

質問は、javascriptで「::」(二重コロン)が何をするのかと重複していない可能性がありますか?、しかし答えは次のとおりです。これは構文エラーです。

以下では:

function SpeechMikeControl::SPMEventButton(lDeviceID, EventId) {

式の先頭にあるグローバルコンテキストのキーワード関数は、関数宣言を示します。以下は、関数名である識別子である必要があります。名前の後には、開始グループ化演算子'('、正式なパラメーターリストおよび終了グループ化演算子')'が必要です。したがって、関数()の間には、許可される文字の単一の識別子のみを指定できます(これは、予約語または将来の予約語ではありませんが、ここでは問題になりません)。

「:」(コロン)文字は句読点であり、識別子に表示することはできません。したがって、コードがjavascriptとして扱われる場合は、構文エラーが発生する必要があります。

おそらくIEには言語の拡張機能があり、それが許容できるかどうかを知るのに十分なECMAScriptを知りませんが、他の実装を壊してしまうので、そうは思わないでしょう。

于 2011-04-19T11:35:22.350 に答える