javascript函数参数
为参数赋初值
JavaScript中没有重载的概念,不过JavaScript中函数的参数都是可选的,如果调用时少写了一个参数,将会被undefined所代替。
eg:
function Add(A, B) { return A + B; } plus(5); // NaN
此处Add(5)与Add(5, undefined)是等价的,5 + undefined的结果是NaN。
将arguments转化为数组
函数中的预定义变量arguments并非一个真正的数组,而是一个类似数组的对象。
它具有length属性,但是没有slice, push, sort等函数,那么如何使arguments具有这些数组才有的函数呢?
也就是说如何使arguments变成一个真正的数组呢?
function args() { return [].slice.call(arguments, 0); } args(2, 5, 16); // [2, 5, 16]
修改arguments
比如,添加一个值到arguments中:
解决办法:
比如,添加一个值到arguments中:
function add() { arguments.push('new value'); } add(); // error - arguments.push is not a function
这样会出错,因为arguments不是一个真正的数组,没有push方法。 解决办法:
function add() { Array.prototype.push.call(arguments, 'new value'); return arguments; } add()[0]; // "new value"
progress every day !