鍍金池/ 問答/HTML/ js變量對象的問題

js變量對象的問題

function foo(a) {
  var b = 2;
  function c() {}
  var d = function() {};

  b = 3;

}

foo(1);
AO = {
    arguments: {
        0: 1,
        length: 1
    },
    a: 1,
    b: undefined,
    c: reference to function c(){},
    d: undefined
}

其中b,d為什么是undefined? 不太懂這個過程唉

回答
編輯回答
怪痞

作用域:

大括號內(nèi)的都是局部變量,外部不可見
沒有var關(guān)鍵字聲明的,作用域提升為全局變量,a、c就是這種情況

多問一句,reference是啥

2018年3月16日 05:58
編輯回答
醉淸風

你貼的信息
上面調(diào)用 返回值為undefined
下面這個不是一個對象嗎
對象鍵值 它定義就是b和d是undefined 有什么過程嗎

2018年6月26日 17:20
編輯回答
冷眸

你這上面和下面兩段代碼有什么聯(lián)系嗎?我怎么沒明白...

2018年5月16日 18:35
編輯回答
乖乖噠

就直接貼一個之前看過很不錯的一片分享,剛好可以解答你這個問題:
https://segmentfault.com/a/11...
里面有對函數(shù)執(zhí)行過程有非常詳細的說明

2017年8月2日 03:44
編輯回答
逗婦惱

這是 foo函數(shù)執(zhí)行初期的 執(zhí)行上下文初始化階段,主要工作是確定作用域內(nèi)的變量聲明提升。
這里確定變量:arguments對象,a,b,cd。
其中 b,c,d 都存在聲明提升。
b,d變量聲明提升,初始值即為 undefined。
c函數(shù)聲明提升,初始值即為寫的 function c(){}。

2018年5月2日 19:28