从documentation for addEventListener
我看到以下模式:
target.addEventListener(type, listener[, useCapture]);
现在我知道useCapture
是一个可选参数。为什么[
会在逗号(,
)之前开始,而不是紧跟在listener
参数之后的逗号之后?除了[]
是可选的这一事实之外,useCapture
的封闭对实际建议了什么?我在jQuery文档中也看到了类似的文档模式,例如: on ()
method documentation。
.on( events [, selector ] [, data ], handler(eventObject) )
答案 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
.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?