6

ドキュメントaddEventListenerから、次のパターンが表示されます。

target.addEventListener(type, listener[, useCapture]);

useCaptureこれで、それがオプションのパラメーターであることがわかりました。then がパラメータに続くコンマの直後ではなく、コンマ( )[の前で始まるのはなぜですか? 囲んでいる のペアは、オプションであるという事実とは別に、実際には何を示唆していますか? メソッドのドキュメントなど、jQuery ドキュメントでも同様のドキュメント パターンを見てきました。,listener[]useCaptureon ()

.on( events [, selector ] [, data ], handler(eventObject) )
4

1 に答える 1

20

角括弧は、その中のものがオプションであることを意味します - あなたが持っているか持っていないかのどちらかです。これは、有効な呼び出しフォームをリストする簡潔な方法です。

基本的な例

target.addEventListener(type, listener[, useCapture]);

次の 2 つの有効な形式があります。

target.addEventListener(type, listener            ); // without
target.addEventListener(type, listener, useCapture); // with

コンマが角括弧の外側にある場合、2 つの形式は次のようになります。

target.addEventListener(type, listener,           ); // without (syntax error)
target.addEventListener(type, listener, useCapture); // with

jQuery の例

.on( イベント [, セレクター] [, データ], ハンドラー );

これは少しトリッキーです。セレクターとデータはオプションなので、次の 4 つの有効な形式があります。

.on( events                , handler ); // without both
.on( events          , data, handler ); // without selector, with data
.on( events, selector      , handler ); // with selector, without data
.on( events, selector, data, handler ); // with both

問題は、2 番目と 3 番目の形式の両方に 3 つのパラメーターがあるため、引数がどのように解釈されるかが明確でないことです。jQuery は中間の引数の型に基づいて決定するようです。文字列の場合は 3 番目の形式が選択されます。それ以外の場合は、2 番目の形式が選択されます。

したがって、以下は"hi"セレクターとしてあり、データ引数として何もありません。

.on( events          , "hi", handler ); // "hi" is the selector (!)

"hi"jQueryが data 引数として使用することを強制するnullには、セレクターに指定する必要があります。

.on( events, null    , "hi", handler ); // "hi" is the data argument

これは明らかに 4 番目の形式であり、ドキュメントによると、nullセレクターは省略されたセレクターと同じように扱われます。

ネストされた例

ドキュメントでは、ネストされた角括弧がよく見られます。Unix コマンドのドキュメントからの簡単な例を次に示しますman

man [--warnings[=type]] ページ

これは、次の形式が有効であることを意味します。

man                   javac    # without outer
man --warnings        javac    # with outer (without inner)
man --warnings=number javac    # with outer (with inner)

ただし、以下は有効ではありません。

man           =number javac    # is this with or without outer?
于 2013-06-16T10:01:12.237 に答える