變量聲明提高和函數聲明提高

 

 一道面試題被虐慘了 看了書看了資料整理的 不記得看了誰的文章了 這是整理後 有部分同樣的不要打我//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

相關文章
相關標籤/搜索