Javascript 解释Array.forEach.apply结果

Javascript 解释Array.forEach.apply结果,javascript,arrays,foreach,Javascript,Arrays,Foreach,在浏览器控制台中,我键入了以下内容: Array.forEach.apply(null,['a','b','c']) 答复是: 答复是: 使用函数apply,您需要传递一个参数数组,即:[fn]: forEach应该接受什么作为参数 然后看看你用apply传递了什么: 因此: 此值arr(应为数组)为null。 第一个参数回调(应该是函数)是字符串a' 根本不应该存在的第二个和第三个参数也是字符串 这完全是意料之中的事。没有什么是正确的数据类型 这次: 这个值应该是数组,它是一个函数 这些论点

在浏览器控制台中,我键入了以下内容:

Array.forEach.apply(null,['a','b','c'])
答复是:

答复是:

使用函数apply,您需要传递一个参数数组,即:[fn]:

forEach应该接受什么作为参数

然后看看你用apply传递了什么:

因此:

此值arr(应为数组)为null。 第一个参数回调(应该是函数)是字符串a' 根本不应该存在的第二个和第三个参数也是字符串 这完全是意料之中的事。没有什么是正确的数据类型

这次:

这个值应该是数组,它是一个函数 这些论点和上次一样有问题 你还没有说你想要实现什么,但你可能在寻找这样的东西:

[...].forEach(function(value, index, array) { ...callback code...});
函数日志\u当前值\u当前值{ console.logcurrent_值; };
Array.prototype.forEach.apply['a','b','c',[log\u current\u value] 问题是,您正在将null作为第一个参数传递给应该传递所需数组的时间。forEach将在其上操作

然后,要求为其提供回调函数,该函数将为每个数组项调用。apply方法要求您在数组中传递任何其他参数。典型的.forEach调用如下所示:

[...].forEach(function(value, index, array) { ...callback code...});
因此,整个函数参数也需要提供给.apply

.apply应该传递给thisArg,[arg,arg,arg,…],第二个参数是所应用函数所需的参数数组

下面是对您看到的内容、原因和正确语法的分解:

//以下操作失败,错误为:无法读取未定义的属性“apply” //因为.forEach是Array.prototype的成员 //Array.forEach.applynull,['a','b','c'] //以下操作失败,错误为:Array.prototype.forEach调用为null或未定义 //因为.forEach在应该传递给它所需的数组时被传递为null //列举: //Array.prototype.forEach.applynull,['a','b','c'] //传递要枚举的数组和任何参数的数组。forEach需要:
apply['a','b','c',[functionv,i,a{console.logv;}];为什么首先要使用.forEach.apply而不是直接在数组上使用.forEach?是否阅读了关于apply的文档?第一个参数必须是this对象,也就是说,对于数组方法,它应该是应用该方法的数组。否。此值必须是要循环的数组,且不为null。数组中第一个也是唯一一个要应用的第二个参数必须是函数。您的实时演示会抛出一个错误@ScottMarcus好的,在firefox中没有。我要检查一下。forEach.apply的参数应该是[]、[],而不是[]、]@ScottMarcus。在firefox中这很奇怪。我需要检查documentation.func.applythisArg[argsArray]
Uncaught TypeError: Array.prototype.forEach called on null or undefined
at forEach (<anonymous>)
at <anonymous>
['a','b','c'].forEach.apply((function(a,b){return b;}),['a','b','c'])
Uncaught TypeError: a is not a function
at String.forEach (<anonymous>)
at <anonymous>
['a','b','c'], [fn] <---- Callback function within an array.
 ^               
 |__ Array (First param).
arr.forEach(function callback(currentValue[, index[, array]]) {
Array.forEach.apply(null,['a','b','c'])
['a','b','c'].forEach.apply((function(a,b){return b;}),['a','b','c'])
[...].forEach(function(value, index, array) { ...callback code...});