首页 > JS数组作为参数的问题

JS数组作为参数的问题

    <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]]就可以了。要不就像楼上那种写法,截取数组。

【热门文章】
【热门文章】