函数适用于使用切片的参数

let*_*ves 14 javascript arrays function slice angularjs

看一下本教程,我在一条评论中看到了以下代码建议:

init:function(callback){
            var that =this ;
            return $http.jsonp(this.url).success(
                function(data){
                    that.availableGenres = that.getGenres(data);
                    that.results = that.getResults(data);
                    if(callback)callback.apply(null,[].slice.call(arguments))
                }
            )
        }
Run Code Online (Sandbox Code Playgroud)

但这条线callback.apply(null,[].slice.call(arguments))对我来说很奇怪.

为什么不callback.apply(null, arguments)呢:?因为我不喜欢,当我不理解我用这个小提琴玩的东西时,要理解slice那里的功能需要.但它给了我相同的结果,我仍然没有得到它.

谁知道为什么slice需要?

Ber*_*rgi 28

你并不真的需要它,传递argumentsapply直接罚款.

它被指定在EcmaScript 3中被允许,并且EcmaScript 5甚至允许任何类似于数组的对象,而不仅仅是数组和参数对象.也许它需要与早期或有缺陷的JS实现向后兼容.另外,(正如你从其他答案中看到的),有些人不知道这个事实,并认为他们需要传递实际的数组 - 所以他们是不必要的小心.