使用函数的arguments属性的正确方法是什么?这就是我目前使用它的方式,但我很确定我没有正确使用它:
首先,我定义我的参数:
parameters = {};
parameters.ID = $tr.data('ID');
parameters.Name = 'Name goes here';
parameters.td = $td;
UpdateName(parameters);
Run Code Online (Sandbox Code Playgroud)
并在功能:
var UpdateName = function(){
var local = {};
local.ID = arguments[0].ID;
local.Name = arguments[0].Name;
local.td = arguments[0].td;
local.jqXHR = $.ajax('Remote/Ajax.cfc', {
data: {
method:'UpdateName'
,returnformat:'json'
,ID:local.ID
,Name:local.Name
}
});
local.jqXHR.success(function(result){
if (result.MSG == '') {
local.td.text(local.Name).addClass('success');
} else {
local.td.addClass('err');
};
});
local.jqXHR.error(function(result){
local.td.addClass('err');
});
}
Run Code Online (Sandbox Code Playgroud)
该arguments对象对于接受任意/未知数量的参数的函数最有用.MDC给出了这个用于创建任何长度的HTML列表的示例:
function list(type) {
var result = "<" + type + "l>";
// iterate through non-type arguments
for (var i = 1; i < arguments.length; i++)
result += "<li>" + arguments[i] + "</li>";
result += "</" + type + "l>"; // end list
return result;
}
Run Code Online (Sandbox Code Playgroud)
......可以像这样使用:
var listHTML = list("u", "One", "Two", "Three");
// listHTML is "<ul><li>One</li><li>Two</li><li>Three</li></ul>"
Run Code Online (Sandbox Code Playgroud)
因为arguments,我们可以传递任意数量的项目list,它只是工作.(请注意,即使在这种情况下,已知参数type,也会被命名,并且迭代arguments开始于其第二个元素.)
您的参数列表是明确定义的,因此没有理由不在函数声明中简单地命名参数.随意使用arguments是不必要的,也很难阅读.