哪位大神回復一下!
我剛才試了,我聲明一個變量var a;然后再繼續聲明function a(){};那么在控制臺會輸出typeof a 會是函數,接下里我改了一下,var a=1;繼續輸出,此時a是number;繼續function a(){return 5;} ? 我強制輸出a();控制臺說a不是個函數。于是誰能解釋一下。是因為function a(){}只有聲明過程。沒有執行過程嗎?我把a 用函數表達式輸出,此時才能返回a是個函數。
我剛才試了,我聲明一個變量var a;然后再繼續聲明function a(){};那么在控制臺會輸出typeof a 會是函數,接下里我改了一下,var a=1;繼續輸出,此時a是number;繼續function a(){return 5;} ? 我強制輸出a();控制臺說a不是個函數。于是誰能解釋一下。是因為function a(){}只有聲明過程。沒有執行過程嗎?我把a 用函數表達式輸出,此時才能返回a是個函數。
2016-04-25
舉報
2016-04-28
是的,function a(){}只有聲明過程;
順序是這樣的:1.function a(){return 5;}進行函數聲明;
? ? ? ? ? ? ? ? ? ? ? ?2.var a被忽略;
? ? ? ? ? ? ? ? ? ? ? ?3.var a=1使a被賦值為1,并覆蓋掉了函數聲明,使a變成了number
然后強制輸出a()是執行函數的語句,a不是函數當然報錯了~
2016-07-31
這個我明白了