2016-03-15 104 views
-2

請看下面的例子:提升變量和功能參數?

function a(a){ 
    console.log(a); 
    function a(){} 
    var a=7; 
    console.log(a); 
} 
a(10) 

那麼,爲什麼是第一次印刷是一種功能,而不是10;

+2

正是因爲*吊起*。你用這個詞,但你似乎沒有調查它的意思......?! – deceze

+0

我知道提升,但是當有一個函數參數時我會混淆。 –

回答

1

函數聲明是在編譯時本身解析,並聲明移到函數的頂部,這樣

function a(a) { 
    var a = function a() {}; 
    console.log(a); 
    a = 7; 
    console.log(a); 
} 
a(10) 

這就是爲什麼你越來越[Function: a]或在第一console.log類似的東西。當行a = 7;被執行時,a被分配值7。這就是爲什麼第二個console.log打印7

+0

當函數執行時,函數參數是如何解析的? –

+0

@SIMDD它們與函數中聲明的變量類似。 – thefourtheye

+0

但是在這個例子中,吊裝後沒有看到賦值的函數參數? –