前端路Web前端之路让前端飞

js中使用forEach方法遇到的问题

2016-12-12  本文已影响797人  iceman_dev

今天在《你不知道的JavaScript》中看到forEach方法中,还可以传一个上下文对象,以前没有发现这个细节,并且在《JavaScript高级程序设计》中,也没有提到这个细节,这次涨见识了,《你不知道的JavaScript》中是这样描述的:

你不知道的JavaScript中使用的forEach.png

当知道了这种用法之后,我本人又做了测试,但是发现了一个问题,就是将这代码做一个简单的变形:

var nums = [1,2,3,4,5,6];
var obj = {
    name : 'iceman'
}
var name = 'shoushou';
function foo (item , index){
    console.log(index + ' , ' + item + ' , ' + this.name);
}
nums.forEach(foo, this)

我测试这段代码的本意是想看看传入不同的上下文对象的结果,但是当我传入全局上下文的this的时候,这段代码在node.js中和在浏览器运行中有不同的结果。

node.js中的运行结果.png 浏览器中的运行结果.png

这是为什么呢?想了很久都没有想明白。是因为内部执行机制不同吗?但是Google浏览器和node解析js不都是用的v8引擎吗?

上一篇 下一篇

猜你喜欢

热点阅读