JS---預解析、聲明提升
阿新 • • 發佈:2018-07-05
define div script 處理 聲明 cti style window對象 變量
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> </body> <script> //預解析,變量聲明提升 if(! ‘a‘ in window){ var a=123; } alert(a);//undefined /*說明: * 1.變量聲明提升,var a; * 2.變量a是window對象的一個成員,if的條件為假,所以賦值語句沒有執行。 * 3.最後打印的a為undefined,因為a聲明了蛤沒有賦值。 * / //函數聲明提升,函數雖然寫在後面,但聲明會提升 foo();//1 function foo () { alert(1); } // if語句中的函數 if(true){ function f1 () { console.log(‘true‘); } }else{ function f1 () { console.log(‘false‘); } } f1();//true // 說明:在新版本的瀏覽器中,寫在邏輯判斷語句塊中的函數會當作表達式來處理,不會當作函數聲明,所以也不存在函數提升的問題。 </script> </html>
JS---預解析、聲明提升