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

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

一個面試題中,關于函數方法的之間調用的問題?

一個面試題中,關于函數方法的之間調用的問題?

躍然一笑 2018-08-02 18:33:59
  function foo() {      foo.a=function(){        console.log(1)      }      this.a=function(){        console.log(2)      }      a=function () {        console.log(3)      }      var a = function(){        console.log(4)      }  }  foo.a=function(){    console.log(6)  }  var obj = new foo();  foo.a()    //為什么是1 不是直接調用嗎?
查看完整描述

2 回答

?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

js的執行順序
function foo() {} 定義全局變量foo
foo.a = function(){} 給全局變量foo的a屬性賦值
var obj = new foo();構造函數調用foo
進入foo函數:
foo.a=function(){}給全局變量foo的a屬性覆蓋操作
this.a=function(){}因為用了new關鍵字 this指向obj所以這句話是obj.a=...
下面兩句要一起看
a = function(){}本來這句沒有var是默認全局變量
var a = function(){}但是這一句用了var導致變量聲明提前所以上面一句的a也變成了局部變量這一句覆蓋了a
所以歸根結底foo.a只執行了兩次操作

查看完整回答
反對 回復 2018-08-05
  • 2 回答
  • 0 關注
  • 1168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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