亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于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 關注
  • 428 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號