Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 试图重写每一个-有更好的方法吗?_Javascript_Loops - Fatal编程技术网

Javascript 试图重写每一个-有更好的方法吗?

Javascript 试图重写每一个-有更好的方法吗?,javascript,loops,Javascript,Loops,我正在尝试创建我自己的每一个类似于jquery的。我得到了预期的输出。我不确定为什么向callback.call提供“this”会使代码正常工作。有没有其他方法可以实现相同的行为 function print(val){ console.log(val); } function each(list, callback){ for(var i = 0; i < list.length; i++){ callback.call(this, list[i]); } }

我正在尝试创建我自己的每一个类似于jquery的。我得到了预期的输出。我不确定为什么向callback.call提供“this”会使代码正常工作。有没有其他方法可以实现相同的行为

function print(val){
  console.log(val);
}

function each(list, callback){
  for(var i = 0; i < list.length; i++){
    callback.call(this, list[i]);  
  }
}


var list = [1, 2, 3];

each(list, print);
功能打印(val){
控制台日志(val);
}
每个函数(列表、回调){
对于(变量i=0;i
以下是您所做的解释。使用
调用
函数,第一个参数是定义所调用函数的“this”。这意味着,如果我执行
myFunction.call(1,2,3)
,在
myFunction
中,this==1,param1==2,param2==3


使用“普通”调用调用函数
myFunction(1)
不会设置此值。所以这次
param1==1

你可以使用
list。forEach(print)
没有必要传递
这个
删除“this”会给我未定义的信息。你有
回调.调用(list[i])而不是
回调(列表[i])
函数print(){console.log(this);}