为了账号安全,请及时绑定邮箱和手机立即绑定

关于JS函数实例化后的内部变量,为什么输出是undefined?

关于JS函数实例化后的内部变量,为什么输出是undefined?

慕尼黑8549860 2018-12-26 17:14:33
var foo = 1;function main() {    console.log(foo);    var foo = 2;    console.log(this.foo);    this.foo = 3;}new main();为什么两个输出都是undefined使用main()的时候,第二个输出是1,是有值的,现在实例化后,为什么就没有了?解析:使用main()调用本函数时,main()函数内的第一个输出console.log(foo)的时候,第二行的var foo = 2对于foo的定义提升了,但是还没有赋值,所以输出是undefined第二个输出console.log(this.foo) 的时候,this.foo的环境变量是window,所以输出是1使用new main()实例化main()后,函数内的第一个输出console.log(foo)的时候,也是因为foo定义提升了,但是没有赋值,所以还是undefined第二个console.log(this.foo)为什么是undefined呢,原因在于使用new实例化后,this会指向当前对象,而main()函数内的this.foo=3赋值也是在console.log(this.foo)之后,所以也是undefinedvar foo = 1;function main() {    console.log(foo); // undefined    var foo = 2;    console.log(foo); // 2    console.log(this.foo); // undefined    this.foo = 3;    console.log(this.foo); // 3}new main();
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 416 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信