首页 新闻 会员 周边 捐助

一段代码不同的执行方式运行结果不一样,求解

0
悬赏园豆:5 [已解决问题] 解决于 2017-07-12 17:59

以下代码在浏览器运行或者在git直接一行行输入,运行的结果都是2,可是把代码保存在独立的js文件中,使用node命令调用,结果却是undefined,这是为什么?

function foo () {
  console.log(this.a);
}
var a = 2;
foo();

js
Evelyn筱的主页 Evelyn筱 | 菜鸟二级 | 园豆:203
提问于:2017-07-08 09:19
< >
分享
最佳答案
0

在浏览器中默认的为js正常模式,而使用node命令调用则使用了严格模式,导致结果不同,你可以尝试在脚本上加入严格模式,再运行同样会显示undefined。

收获园豆:2
铁柱成针 | 小虾三级 |园豆:614 | 2017-07-10 15:06

 在严格模式中,禁止了this指针指向全局对象,故会显示undefined

铁柱成针 | 园豆:614 (小虾三级) | 2017-07-10 15:10
其他回答(3)
1

因为用的引擎不一样

收获园豆:1
吴瑞祥 | 园豆:29449 (高人七级) | 2017-07-08 09:50
0

导致this指向的东西不一样

收获园豆:1
西漠以西 | 园豆:1675 (小虾三级) | 2017-07-08 10:13
0

node 用的 js用的ECMAScript版本比浏览器里面用的高

收获园豆:1
慧☆星 | 园豆:5722 (大侠五级) | 2017-07-10 09:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册