0
我發現這段代碼在JavaScript的依賴注入實現中使用:使用arguments對象,而不是參數
resolve: function() {
var func, deps, scope, args = [], self = this;
func = arguments[0];
deps = func.toString().match(/^function\s*[^\(]*\(\s*([^\)]*)\)/m)[1].replace(/ /g, '').split(',');
scope = arguments[1] || {};
return function() {
var a = Array.prototype.slice.call(arguments, 0);
for(var i=0; i<deps.length; i++) {
var d = deps[i];
args.push(self.dependencies[d] && d != '' ? self.dependencies[d] : a.shift());
}
func.apply(scope || {}, args);
}
}
,我想知道自己爲什麼那麼難看func = arguments[0]
在那裏,因爲我寫的只需:function(func) { ... }
...有什麼區別?
*「這是使用默認值所必需的」* - 不,它不是。爲什麼會這樣? – nnnnnn
好吧,你可以重新分配,但那通常被認爲是不好的代碼風格 – Lux
我會說在函數聲明中使用參數而不是命名參數是(通常)更糟的代碼風格... –