所以,我需要你的帮助,看看这个剧本:
function findMax() {
var i;
var max = -Infinity;
for (i = 0; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}
document.getElementById("demo").innerHTML = findMax(4, 5, 10);
结果= 10
问题是程序如何知道参数中的三个中哪个数字进入参数[i]?我没有看到它在任何地方给它带来价值,它以某种方式将这个数组与变量&#34; max&#34;找出最大数量。希望有人能解释一下。
答案 0 :(得分:2)
每个函数都有一个名为arguments
的参数,它是一个类似于object的数组,包含调用函数时传递的参数。
正如更正式地陈述here:
arguments对象是一个可用的局部变量 功能。您可以在函数中引用函数的参数 通过使用arguments对象。该对象包含每个条目 传递给函数的参数,从第一个条目开始的索引 0
function test(){
for(var i = 0; i<arguments.length; i++){
console.log(arguments[i]);
}
}
test('a');
test(1,2,3);
&#13;
答案 1 :(得分:0)
arguments
对象是任何函数内部的固有自动值。该对象是 like 在调用时传递给函数的实际参数的数组。
如果你有一个函数,并且用一个值列表调用它,该函数可以通过arguments
对象检查这些值。
答案 2 :(得分:0)
请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments
有关arguments对象的解释。
它是由Javascript自动完成的。参数按照给函数的顺序放在数组中。
答案 3 :(得分:0)
阅读本文:https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Functions/arguments
参数包含传递给函数的所有参数,因此在循环中它将循环它们
答案 4 :(得分:0)
问题是程序如何知道参数中的三个中哪个数字进入参数[i]?
这是在运行时确定的。调用发生时,会自动动态创建ServiceWorkerRegistration
对象。
我没有看到它在任何地方给它带来价值,它以某种方式将这个数组与变量&#34; max&#34;找出最大数量。
其成员将是传递的参数的确切数量。如果你传递3个参数,它将使用成员arguments
,0
和1
创建,引用这三个参数。
所以在这一点上,出于迭代的目的,你可以将它视为一个数组,因为它也会使用args的总数来填充其2
属性。
答案 5 :(得分:0)
arguments
对象是一个类似于Array的对象,对应于传递给函数的参数。
它包含一个length
属性,它是传递给函数的参数数量,[@@iterator]
属性与array
类似:arguments[i]
包含并引用i
索引处的元素。
The Function documentation提供了更多详细信息:
arguments
对象是一个可用的局部变量 功能。您可以在函数中引用函数的参数 使用arguments
对象。该对象包含每个条目 传递给函数的参数,从第一个条目开始的索引 例如,如果函数传递了三个参数,则可以按如下方式引用它们:
arguments[0]
arguments[1]
arguments[2]
答案 6 :(得分:0)
除了arguments
,
arguments
对象是所有函数中可用的局部变量。您可以使用arguments
对象在函数内引用函数的参数。该对象包含传递给函数的每个参数的条目,第一个条目的索引从0开始。
你可以将它的第一个元素作为起始值并从第二个元素开始迭代。优点是,你得到一个真正的价值,如果没有争论,那么你得到undefined
而不是-Infinity
。
function findMax() {
var i,
max = arguments[0];
for (i = 1; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}
console.log(findMax(4, 5, 10)); // 10
console.log(findMax()); // undefined
答案 7 :(得分:0)
问题是程序如何知道参数中的三个中哪个数字进入参数[I]?
因为这就是你要求它做的事情; - )
如上所述,MDN有一个很好的页面,描述了参数数组是什么,如何访问它的每个元素以及如何操作参数数组。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments
回到你的代码,for循环遍历参数数组,所以这一行:
if (arguments[i] > max) {
实际上在说:
if (arguments[4] > max) {
if (arguments[5] > max) {
if (arguments[10] > max) {
在每次迭代时给定参数数组的长度(在本例中为3)