使用和返回动态参数是否安全
Is it safe to operate with and return dynamic arguments?
/*
* Example function for operating with dynamic arguments
*/
function something(){
for(var i in arguments){
arguments[i] = arguments[i] + Math.random() * 25;
}
return arguments;
}
没有错误,没有注意到性能下降,并且值已更改。
那么,对动态参数进行此类操作是否安全?
我永远不会返回它,因为它不是一个真正的数组(有关该对象特殊行为的一些信息,请参阅 http://javascriptweblog.wordpress.com/2011/01/18/javascripts-arguments-object-and-beyond/) - 因此根据调用代码对它的处理方式,它会失败。
但是,您可以轻松地将其转换为数组:
var args = Array.prototype.slice.call(arguments);
我不会修改原始对象,因为如果您的函数接受任何参数,更改也会更改相应的命名参数。
arguments
是一个"伪数组"。它与返回数组有何不同?唯一的缺点是arguments
不是数组,因此,您没有所需的数组属性和方法。
是的,它是安全的。但是,您应该注意 arguments
对象的功能,它在 Ecmascript 实现和版本之间有所不同。它可以是绝对链接到参数变量的伪数组,也可以是独立的 Array 实例。
如果你知道你的环境没关系,否则最好编码
function something() {
var l = arguments.length,
res = new Array(l);
for(var i=0; i<l; i++) {
res[i] = arguments[i] + Math.random() * 25;
}
return res;
}
相关文章:
- Javascript检查参数是否为零值
- 为什么 JSON.parse 无法检测参数是否已采用 JSON 格式
- Node.js如何知道回调的第一个参数是否是错误处理程序
- 检查参数是否传递给Java Script函数
- 自执行函数中的参数是否必要
- 如何确定参数是否为点击事件
- $interval的时间参数是否可以在间隔之间动态更改
- 使用和返回动态参数是否安全
- 如何检查传递到递归函数的参数是否是数组的元素
- 检查对象参数是否具有所有必需属性的最有效方法是什么
- 检查函数参数是否存在,并在JavaScript中键入
- JavaScript 检查函数参数是否满足条件
- 参数是否可以被覆盖
- 自定义 jquery 函数中的参数是否可以更改全局变量的值
- 检查传入参数是否在数组对象中
- 如何检查参数是否在JavaScript函数定义中定义
- 检查对象参数是否未定义
- 在javascript中检查参数是否被赋值
- 如何检查参数是否存在于node.js中的查询字符串中
- 猫鼬查找具有多个条件的记录并检查请求参数是否为空