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...});