看文檔的時候產生的疑問,如一個node中的write方法:
buf.write(string[, offset[, length]][, encoding])
函數參數中的中括號代表什么了?怎么有些只有半個括號,比如string[ 或 offset[;而有的卻是length]][這樣了?
簡單的回答就是中括號表示這個參數非必須.
首先,這樣使用中括號只是出於一種的表達形式的需要而已(這樣的表達形式很常見),這與api本身是沒有關系的。
然后,我們拿上面的例子來說
buf.write(string[, offset[, length]][, encoding])
對於buf.write這個方法:
第一個參數string是必須的,他表示你要寫入的內容;往后的offset、length、encoding這些參數都是非必須的。這些參數你可以不傳(用[]括起來表示不傳),但並不表示這三個參數你想怎么傳就怎么傳的,這里是有規則的,規則從這里中括號的對應關系中可以看出來。我們來看他的對應關系:[, offset[, length]] && [ encoding]。這表示offset、length和encoding你可以傳或者不傳,但是你要是沒有傳offset的話那length是一定不能傳的,這就是為什么length要放在offset的括號里面的原因。
所以整個例子理解起來就是:
string必須傳,offset、length、encoding可傳可不傳,但是offset不傳的話length也不能傳。