Javascript I';我很难阅读文档

Javascript I';我很难阅读文档,javascript,python,Javascript,Python,我一直在阅读文档,但当我看到方法或函数时,我会看到类似的内容 str.count(sub[, start[, end]]) emitter.emit(eventName[, ...args]) 我不知道什么是括号,什么是需要参数,什么是可选的 这段代码来自python文档,我也看到了括号和其他东西 我想要的是: 这个图案的名字是什么 如何理解它 因为我经常看到这个模式,实际上我喜欢它,但不理解它,我想用它来记录我未来的代码。对于字符串,返回其中指定子字符串不相交的出现次数 sub-应计算其出

我一直在阅读文档,但当我看到方法或函数时,我会看到类似的内容

str.count(sub[, start[, end]])

emitter.emit(eventName[, ...args])
我不知道什么是括号,什么是需要参数,什么是可选的

这段代码来自python文档,我也看到了括号和其他东西

我想要的是:

  • 这个图案的名字是什么
  • 如何理解它

  • 因为我经常看到这个模式,实际上我喜欢它,但不理解它,我想用它来记录我未来的代码。

    对于
    字符串
    ,返回其中指定子字符串不相交的出现次数

    sub
    -应计算其出现次数的子字符串。
    start=0
    -行中开始计算子字符串出现次数的位置。
    end=None
    -行中完成子字符串出现次数计算的位置

    eventName <string> | <symbol>
    ... args <Any>
    Returns: <boolean>
    
    eventName|
    ... args
    返回:
    
    按注册顺序同步调用为eventName命名的event注册的每个侦听器,并将提供的参数传递给每个侦听器

    如果事件有侦听器,则返回
    true
    ,否则返回false

        str.count(sub[, start[, end]])
    
        emitter.emit(eventName[, ...args])
    
    []表示可选参数的列表。括号中的内容是参数

    对于第一个示例:

  • sub是所需参数
  • 开始结束是可选参数。您可以单独使用开始,并跳过结束。但是,如果要使用结束,则需要提供开始。这是嵌套括号的含义-startend都是可选的,但是endstart的可选,而end需要start
  • 在第二个例子中:

  • eventNamei必填项
  • …args是可选的。这个前面的符号表示它是一个数组
  • 对于描述为eventName[,…args]的函数,您可以传递任何需要的内容,它将作为数组转发给处理程序

    概述 简单地说,方括号内的所有内容都显示一个可选参数。如果在其他方括号内有方括号,则表示第二个方括号仅在使用第一个方括号时有效

    第一份文件
    str.count(sub[,start[,end]])

    文档显示:
    str.count(sub[,start[,end]])
    ()
    (因此
    sub
    start
    end
    )中的每个变量都是参数

    让我们从一个简单的例子开始。想象一下文档只允许两个参数,如:
    str.count(sub,start)
    。这里的问题是
    start
    是可选的!如果用户希望从字符串开头以外的其他位置开始搜索,则只需将其包括在内

    解决方法是在
    []
    中始终包含可选的参数。这意味着我们的新文档是:
    str.count(sub[,start])

    逗号位于
    []
    中的原因是,您几乎可以想到“删除”
    []
    中的所有内容。如果逗号在外部,比如:
    str.count(sub,[start])
    并且您删除了
    []
    中的所有内容,那么它看起来像:
    str.count(sub,)
    ,我们可以看到它是错误的

    第一份文件,进一步解释 这就是你看到的有趣的逗号
    []
    背后的原因。但是“为什么会有像
    [,[]]
    ?”这样的东西”这个问题仍然存在

    答案是:因为一些可选参数依赖于其他参数。在这种情况下,只有使用了
    start
    参数,才能使用
    end
    参数。如果我们尝试了前面的规则,并将
    start
    end
    放在同一个
    []
    中,那么我们得到:
    str.count(sub[,start,end])

    这是错误的,因为它表明我们只能同时使用两个可选参数或一个参数,因为如果我们删除
    []
    我们会得到:
    str.count(sub)
    。这里没有中间人

    为了告诉我们的用户这一点,我们将第二个
    []
    放在第一个参数中,这样第二个可选参数只有在第一个参数被使用时才可用。因此,如果我们只想使用
    start
    可选参数,我们将保留第一个
    []
    ,并删除第二个
    []
    (位于第一个参数内),这意味着
    str.count(sub[,start[,end]])
    变为
    str count(sub,start)
    。我们只删除了最内部的
    []

    使用这个新的
    [,[]]
    系统,这也意味着我们不能只使用
    end
    参数,因为要删除
    start
    我们必须删除外部
    []
    ,但这也会删除内部
    []
    ,然后删除
    end

    第一份文件,进一步解释 “但如果我们想使用两者的任意组合,该怎么办?”你不想。如果我们这样做:
    str.count(sub[,start][,end])
    这意味着我们可以有
    start
    end
    的任意组合

    这会破坏一切,因为如果我们只使用
    end
    参数,就无法判断它是
    start
    还是
    end
    !如果我们使用
    str.count(sub[,start][,end])
    ,我们不知道
    str.count(sub,5)
    是否意味着我们想要