如何解释可选JavaScript参数的文档

时间:2013-06-16 09:52:07

标签: javascript jquery

documentation for addEventListener我看到以下模式:

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

现在我知道useCapture是一个可选参数。为什么[会在逗号,)之前开始,而不是紧跟在listener参数之后的逗号之后?除了[]是可选的这一事实之外,useCapture的封闭对实际建议了什么?我在jQuery文档中也看到了类似的文档模式,例如: on () method documentation

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

1 个答案:

答案 0 :(得分:15)

方括号意味着它们内部的东西是可选的 - 要么你拥有它,要么你没有。这是列出有效调用表单的简明方法。

基本示例

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(events [,selector] [,data],handler);

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

.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的文档中的简化示例:

man [--warnings [= type]] page

这意味着以下表格有效:

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?