解决sublime直接运行js文件,涉及到this和window的时候总是显示undefined的方法


先说解决办法:用html文件引入这个js文件,然后在控制台查看结果。或直接在html文件中的js标签中写代码,然后再控制台查看结果。


下面是过程和原理:

今天看项目的时候,遇到了this指向问题,便去复习了this指向问题。看的过程中想验证一下一些猜想,便用sublime打开一个test.js文件直接运行代码看结果,代码是一个基础的this指向问题的例子:

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

很明显,这个程序的运行结果应该是 1 。

但当我用sublime的 command+b 直接运行js文件之后(command+b是安装了node.js然后更改设置的功能),它却显示undefined,如图:

这明显不是答案,于是便试了下让上面的代码在html的js标签中运行,然后去控制台看,果然是显示的2。这就说明sublime直接运行js文件内部有错误。于是去google了一下,得出了原因:

这里显示undefined是因为这里的运行实际是运行的 node,程序中的this是指向window,而 window 属于浏览器环境中的全局变量,在 node 中肯定拿不到的。所以会显示undefined。

解决办法就是用html文件引入这个js文件,然后在控制台查看结果。或直接在html文件中的js标签中写代码,然后再控制台查看结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值