一道面試題被虐慘了 看了書看了資料整理的 不記得看了誰的文章了 這是整理後 有部分同樣的不要打我//html
變量聲明提高面試
<!DOCTYPE html> <html> <head><script> var i = 20; function n(){ alert(i); }; n(); </script> </head> </html> //結果是20
<!DOCTYPE html> <html> <head><script> var i = 20; function n(){ alert(i); var i = 50; }; n(); </script> </head> </html> //結果是undefined
↑變量聲明提高會把變量聲明提早,可是變量初始化還在後面,若是在變量初始化前面輸出,變量還未初始化,就會alert出undefined,這是變量聲明提高。函數
函數聲明提高是在執行代碼以前會讀取函數聲明。能夠把函數聲明放在調用他的語句後面。spa
函數聲明是把一個函數值賦值給了變量,因此能夠進行函數聲明提早。函數表達式是一個表達式是把函數對象賦值給了變量,因此不能進行函數聲明提早。code
函數表達式和函數聲明的區別:htm
函數聲明格式
function(arg0,arg1,arg2){
//函數體
}
函數表達式格式
var functionName = function(arg0,arg1,arg2){ //函數體 }
一、函數聲明必須有標識符,也就是函數名,函數表達式能夠省略函數名。對象
二、函數聲明提高,能夠把函數聲明放在調用他的語句後面。函數表達式不能夠,會報錯。blog
三、函數聲明語句能夠出如今全局代碼中,或者內嵌在其餘函數中,不能出如今循環、條件判斷或者try/finally以及with語句中。ip