1.这是我看某文档的时候产生的疑问,如一个node中的write方法:
buf.write(string[, offset[, length]][, encoding])
2.问题:函数参数中的中括号代表什么了?怎么有些只有半个括号,比如string[ 或 offset[;而有的却是length]][这样了?
3.还会有其他符号也有它独特代表的含义吗?
4.这种写法的好处是什么?
1.这是我看某文档的时候产生的疑问,如一个node中的write方法:
buf.write(string[, offset[, length]][, encoding])
2.问题:函数参数中的中括号代表什么了?怎么有些只有半个括号,比如string[ 或 offset[;而有的却是length]][这样了?
3.还会有其他符号也有它独特代表的含义吗?
4.这种写法的好处是什么?
8 回答4.6k 阅读✓ 已解决
6 回答3.3k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
以上三个问题作一个问题回答。
简单的回答就是中括号表示这个参数非必须.
接下来详细解释。
首先,这样使用中括号只是出于一种的表达形式的需要而已(这样的表达形式很常见),这与api本身是没有关系的。
然后,我们拿上面的例子来说
对于
buf.write
这个方法:第一个参数
string
是必须的,他表示你要写入的内容;往后的offset
、length
、encoding
这些参数都是非必须的。这些参数你可以不传(用[]括起来表示不传),但并不表示这三个参数你想怎么传就怎么传的,这里是有规则的,规则从这里中括号的对应关系中可以看出来。我们来看他的对应关系:[, offset[, length]]
&&[ encoding]
。这表示offset
、length
和encoding
你可以传或者不传,但是你要是没有传offset
的话那length
是一定不能传的,这就是为什么length
要放在offset
的括号里面的原因。所以整个例子理解起来就是:
string
必须传,offset
、length
、encoding
可传可不传,但是offset
不传的话length
也不能传。至于这样写有什么好处,我想这可能是当初写api那帮家伙觉得这样表达更合理吧,后面写文档的觉得这种方式还不错,就依葫芦画瓢了,慢慢的就约定俗成了。