2011年10月24日

javascript function參數預設值

參考原文 http://parentnode.org/javascript/default-arguments-in-javascript-functions/

要設定參數預設值,一般來說使用undefined來判定

function foo(a, b)
{
a = typeof(a) != 'undefined' ? a : 42;
b = b || 'default_b';
...
}


作者將function加上一個defaults屬性

Function.prototype.defaults = function()
{
var _f = this;
var _a = Array(_f.length-arguments.length).concat(
Array.prototype.slice.apply(arguments));
return function()
{
return _f.apply(_f, Array.prototype.slice.apply(arguments).concat(
_a.slice(arguments.length, _a.length)));
}
}

之後就可以這樣使用來設定預設值

var foo = function(a, b)
{
...
}.defaults(42, 'default_b');

我覺得這是滿有創意的方法,可以參考用來解其他問題,但是我覺得這樣並沒有增加可讀性,並不推薦