函数参数在其他地方声明
function argument declare in other place?
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"
)
我是javascript的新手,我碰巧看到了这些代码行。
我想知道代码是否将函数参数移动到代码的后面部分?
这意味着它与以下内容相同。
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]
}
}
因为我在 w3cschool 上没有看到任何参考资料,所以我发布了这个问题。
希望它不会太愚蠢。谢谢。
在您提供的第二个代码片段中,正在声明 preload 方法,这意味着您不能将数据作为参数传递,只能声明这些参数的名称。您发布的第一个代码段由两部分组成。 函数声明和对该函数的调用,其中三个 URL 作为参数。
请注意,在函数声明中,实际上没有定义任何参数。就好像函数不应该接受任何函数一样。这是因为,所述函数的创建者决定该函数应接收的参数数量是可变的。
为此,他使用 arguments
数组,每个 JavaScript 函数在其范围内都有该数组。它是一个类似数组的对象,其中包含传递给函数的每个参数。
了解参数的工作原理非常重要。 请看以下示例:
function func1(arg1, arg2, arg3) {
console.log(arg1);
console.log(arg2);
console.log(arg3);
}
function func2() {
for(var i=0; i<arguments.length; i++) {
console.log(arguments[i]);
}
}
这两个函数对于三个参数是等效的:
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
在第二个示例中,您将参数及其值混淆了。 函数的参数应该始终是变量,因为它们可以很好地保存任何值(不仅仅是字符串! 因此,函数声明应该对保存值的变量执行操作,并且在调用函数时,可以直接传递带有值或字符串值的两个变量(如第一个示例的情况)。
希望对您有所帮助!
相关文章:
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 直接在函数声明上使用function.prototype.bind
- 获取HTML属性中CSS声明的值
- 对API数据使用声明性绑定
- 可以Resharper在我的javascript函数声明中添加分号
- 如何为排除无穷大和NaN的数字声明Flow类型
- 此行是否包含函数声明
- Javascript以不同的方式声明数字
- 如何使用php文件中的GET来获取我在.js文件中声明的变量
- 使用同一对象中的其他变量声明变量
- 如何在AngularJS工厂中正确声明对象属性
- 用||声明变量
- 其中的用例标签'的声明
- 如何将变量声明为全局变量
- 调用函数中声明的变量
- 一个'var'在函数内部声明
- 我应该如何声明我的自调用函数
- 使用在函数外部声明的变量的 Javascript 返回值 + undefined
- 函数声明与函数表达式之间的性能差异
- 在setInterval函数之前声明时未定义对象