6

文档中addEventListener我看到以下模式:

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

现在我明白这useCapture是一个可选参数。为什么[then 开始在逗号( ,) 之前,而不是紧跟在参数后面的逗号之后listener?除了可选[]的事实之外,封闭的一对实际上暗示了什么?useCapture我还在 jQuery 文档中看到了类似的文档模式,例如on ()方法文档

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

1 回答 1

20

方括号意味着它们里面的东西是可选的——要么你有,要么你没有。这是列出有效调用表单的简洁方式。

基本示例

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

有两种有效形式:

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

如果逗号在方括号之外,则两种形式将是

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

jQuery 示例

.on(事件[,选择器] [,数据],处理程序);

这个有点棘手。选择器和数据是可选的,因此有四种有效形式:

.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

问题是第二种和第三种形式都有三个参数,所以如何解释参数并不明显。jQuery 似乎根据中间参数的类型来决定:如果它是字符串,则选择第三种形式;否则选择第二种形式。

因此,以下内容将"hi"作为选择器,而没有任何数据参数:

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

要强制 jQuery"hi"用作数据参数,null必须为选择器指定:

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

这无疑是第四种形式,文档说null选择器被视为与省略的选择器相同。

嵌套示例

在文档中,您经常会看到嵌套的方括号。这是 Unix 命令文档中的一个简化示例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 回答