如何将字符串数组作为参数传递给函数
How can I pass an array of strings to a function as arguments?
我有几个数组,如下所示:
var galImgs = ["http://domain.tld/gallery/image-001.jpg",
"http://domain.tld/gallery/image-002.jpg",
"http://domain.tld/gallery/image-003.jpg"],
preloadImgs = [];
我想使用一个简单的for
循环从galImgs
数组中的值加载图像,如下所示:
function preload() {
for (i = 0; i < preload.arguments.length; i++) {
preloadImgs[i] = new Image();
preloadImgs[i].src = preload.arguments[i];
}
}
但是,调用
preload(galImgs);
作为单个字符串而不是逗号分隔的字符串在数组中传递。如何传递galImgs
数组,以便将其作为单独的参数读取?
但是,调用
preload(galImgs);
作为单个字符串而不是逗号分隔的字符串在数组中传递。
不,它在数组中传递,而不是字符串。实际上,您在preload
函数中遇到了太多麻烦,只需使用给定的数组:
function preload(a) {
for (i = 0; i < a.length; i++) {
preloadImgs[i] = new Image();
preloadImgs[i].src = a[i];
}
}
(在函数中声明i
变量,我在上面没有添加;事实上,你正成为隐式全局变量恐怖的牺牲品。(
这样做的优点是不使用arguments
伪数组,这对大多数实现来说都是一个性能打击。
不过,如果您愿意,可以使用数组通过apply
函数将离散参数传递给preload
:
preload.apply(undefined, galImgs);
第一个参数用于函数中的this
,您可以只使用undefined
作为默认值;第二个参数是数组,它将在函数中显示为离散参数。
问题是您使用arguments关键字来查找传入的事件。你真正想要的是
function preload(images) {
for (i = 0; i < images.length; i++) {
preloadImgs[i] = new Image();
preloadImgs[i].src = images[i];
}
}
为了帮助你更好地理解,除了一件事,你以前的方式很好。。
preload.arguments.length == 1
preload.arguments[0] == galImgs
preload.arguments[0][0] == galImgs[0]
您正在寻找应用方法:
preload.apply(null, galImgs);
应该这么做!
将其视为单个字符串无需担心。只需为数组提供索引,就可以获得各个字符串。
galImgs[0]会返回字符串"http://domain.tld/gallery/image-001.jpg">
您可以使用gallmgs。它是一个数组对象,并且您将在其中拥有数组的所有访问器。尝试gallmgs.length.
相关文章:
- 函数未将值作为参数传递
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- 如何传递函数中的参数
- 将参数传递给函数
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 传递带有参数的函数
- javascript,将参数传递给函数内部的闭包中的回调
- 将字符串作为参数传递给函数onclick event jquery
- 将修改后的数组作为参数传递给函数
- 代码气味-将布尔控制参数传递给函数
- 将参数传递给函数,同时保留事件处理程序
- 如何使用按钮将参数传递给函数
- 作为参数传递时如何计算函数
- 将对象作为参数传递时的 Javascript 函数作用域
- 将回调作为参数传递给函数
- 在构造控制器、服务等时作为函数参数传递之前列出的角度 JS 变量
- 作为参数传递的函数的异步执行
- 将请求作为参数传递给函数
- 什么时候需要在javascript中的函数中将对象作为参数传递
- Javascript,对象,用参数传递函数作为参数- angular, jquery概念基本误区