Javascript 函数参数是否在其他位置声明?

Javascript 函数参数是否在其他位置声明?,javascript,Javascript,我是javascript新手,我碰巧看到了这些代码行。 我想知道代码是否将函数参数移动到代码的后面部分? 这意味着它与以下内容相同 function preload() { for (i = 0; i < preload.arguments.length; i++) { images[i] = new Image() images[i].src = preload.argumen

我是javascript新手,我碰巧看到了这些代码行。 我想知道代码是否将函数参数移动到代码的后面部分? 这意味着它与以下内容相同

function preload() {
                for (i = 0; i < preload.arguments.length; i++) {
                    images[i] = new Image()
                    images[i].src = preload.arguments[i]
                }
            }
            preload(
                "http://domain.tld/gallery/image-001.jpg",
                "http://domain.tld/gallery/image-002.jpg",
                "http://domain.tld/gallery/image-003.jpg"
            )
因为我没有看到关于w3cschool的参考资料,所以我发布了这个问题。
希望不要太愚蠢。谢谢。

在您提供的第二个代码段中,正在声明preload方法,这意味着您不能将数据作为参数传递,只能声明这些参数的名称。您发布的第一个代码段由两部分组成。一个函数声明和对该函数的调用,使用三个URL作为参数

请注意,在函数声明中,实际上没有定义任何参数。这就好像函数不应该接受任何。这是因为,所述函数的创建者决定该函数应接收的参数量是可变的


为此,他使用arguments数组,每个JavaScript函数在其作用域内都有arguments数组。它是一个类似数组的对象,包含传递给函数的每个参数。

了解参数是如何工作的很重要。请看以下示例:

function preload("http://domain.tld/gallery/image-001.jpg",
                "http://domain.tld/gallery/image-002.jpg",
                "http://domain.tld/gallery/image-003.jpg") {
                for (i = 0; i < preload.arguments.length; i++) {
                    images[i] = new Image()
                    images[i].src = preload.arguments[i]
                }
            }  
但是,只有第二个将打印所有四个参数,而第一个将仅打印三个:

func1('test1', 'test2', 'test3');            // Output:  test1, test2, test3
func2('test1', 'test2', 'test3');            // Output:  test1, test2, test3
在第二个示例中,您混淆了参数及其值。函数的参数应该始终是变量,因为它们可以很好地保存任何值,而不仅仅是字符串!。因此,您的函数声明应该对保存该值的变量执行操作,并且在调用该函数时,您可以像第一个示例那样,直接用值或字符串值传递这两个变量


希望有帮助

我可以直接编辑arguments数组,然后使用新的arguments数组和所需的输入调用函数吗?下一个答案刚刚回答了我的问题
func1('test1', 'test2', 'test3');            // Output:  test1, test2, test3
func2('test1', 'test2', 'test3');            // Output:  test1, test2, test3
func2('test1', 'test2', 'test3');             // Output:  test1, test2, test3
func2('test1', 'test2', 'test3', 'test4');    // Output:  test1, test2, test3, test4