浏览器、git和node.js中代码执行结果差异的原因
以下代码在不同的平台执行会产生不同的结果:
function foo() { console.log(this.a);}var a = 2;foo();
登录后复制在浏览器中运行或在git直接执行: 结果为2保存在独立的js文件中,使用node命令调用: 结果为undefined
原因在于node.js使用了严格模式,而浏览器默认的为普通模式。
严格模式是一种强制执行更严格的语法和语义规则的模式,它对全局作用域有着不同的行为定义:
在普通模式下,未声明的变量被自动提升到全局作用域。在严格模式下,未声明的变量会抛出错误。
在给定的代码中,this在严格模式下指向全局对象,而全局对象中没有定义a。因此,在严格模式下调用console.log(this.a)会输出undefined。
为了在浏览器中重现该行为,可以在脚本上添加”use strict”语句:
"use strict";function foo() { console.log(this.a);}var a = 2;foo();
登录后复制
这样,代码将在浏览器中运行时,也会输出undefined。
以上就是浏览器、Git 和 Node.js 执行相同代码结果不同,原因何在?的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2659072.html