<script>
window.onload = function() {
function fun(a) { // 这里改一下a[1]作为参数呢?
for(i = 0; i < a.length; i++) {
alert(a[i]);
}
}
var a = [1, 2, 3]
fun(a);
}
</script>
这个代码没问题,但是我把fun(a)改了,a[0或1或2]就出错了为什么呢?如果我只想把这个数组的
一部分作为参数呢?
参数本身是不限制你传什么类型的,至于你的代码会出错,那是因为函数体内部的代码的问题。
比如你传了 a[0] ,也就相当于传了一个 1
那这时候来看后面要执行的代码,一个for循环,循环结束条件是 i < 1.length ,
你觉得这里会不会出错?
如果你又想传数组,又想可以传数组的元素,那你的代码就要改,比如多加一层判断,判断参数类型。
fun(a.slice(0,1)); //0, 1为数组索引
或者传入数组,在里面slice
建议用一楼的方法,用slice是不会改变原数组的,只要在数组中找到你需要的元素,用slice取出子集作为参数
@王小强 的方法不错,也可以考虑下面这种方式:
function fun(a) {
if(Array.isArray(a)) {
a.map(function(i) {
alert(i);
});
}else {
alert(a);
}
}
方法要求的参数是个数组,你必须得传进去一个数组。想要传进去一部分也要把那部分包装成数组。a[1]可能不是数组,所以不行。但是如果[a[1]]就可以了。要不就像楼上那种写法,截取数组。