1
我在編寫函數時看到了庫可利用可選參數和回調函數。我正在編寫一個庫,並且我想知道是否允許用戶跳過可選參數併發送回調是一個好習慣。使用具有可選參數的回調函數
例如:
function listFiles(params, callback) {
if (typeof params === 'function' && !callback) {
callback = params;
params = {};
}
// more code here...
}
我的媒體庫的用戶可以撥打listFiles()
與參數:
listFiles({ verbose: true }, function callback(err, results) { /*... */ })
或只透過callback()
功能:
listFiles(function callback(err, results) { /*... */ })
主要好處我見用這種方法是用戶不需要這樣做:
listFiles(null, function callback(err, results) { /*... */ })
或
listFiles({}, function callback(err, results) { /*... */ })
的問題是,如果我verbose
必需的參數,我會打破所有未發送與被髮送空或null作爲params
的那些一起params
用戶。
我應該使用可選參數作爲回調還是這是一個壞主意?
作爲評論添加,因爲這更多的是一個經驗法則:如果你合理地期望第一個參數可以beco我需要,不要讓它成爲可選的。就個人而言,通過使用「params」(而不是隻允許回調)所提供的穩定性要好於不必指定null或{{}的小方便。 – FeifanZ
爲什麼不把參數作爲第二個參數?然後你可以檢測它是否被定義。 –
@ChrisHappy不會說OP,但回調作爲最後一個參數是一個廣泛使用的JS約定。國際海事組織,它會更糟糕,打破 – FeifanZ