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

今天在《你不知道的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中的运行结果:
node.js中的运行结果.png
  • 浏览器中的运行结果:
浏览器中的运行结果.png

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

推荐阅读更多精彩内容

  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    w_zhuan阅读 3,375评论 2 41
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    Myselfyan阅读 3,880评论 2 58
  • 就这样聊着聊着,从清晨到正午,直至黄昏,又一直到深夜。 突然,我们被大巴司机大声地通知:你们到了! ...
    绿洲121212阅读 353评论 0 3
  • 刚刚忙乎完,把油蛋都炸好了,相信老爸老妈明天一定很惊喜。难得有他们那么喜欢的小零食,还是很欣慰的。 越长大,他们越...
    果喵阅读 67评论 0 0
  • 风又怜,雨又怜。夜雨临风卧枕眠,繁星残不残?风影帘,雨影帘。谁唤阶前不眸面,薄襟寒不寒?
    碧海难奔阅读 95评论 0 1