1. 程式人生 > >js中函式宣告提前

js中函式宣告提前

js中函式宣告提前

js中普通的變數會宣告提前外,函式也會宣告提前,不同的是由於函式的宣告有兩種方法,宣告提前的方式也就有兩種方式;
1、通過 var fn=function(){}定義函式,只是將函式名提前了,函式體沒有提前,如果在函式體前使用fn()呼叫函式就會報錯

fn();
var fn = function(){
	console.log('函式體沒有提前');
}
//結果:報錯!Uncaught TypeError: fn is not a function

2、通過function fn(){}定義函式,是將整個函式體提前了,此時使用fn()呼叫函式就會正常

fn();
function fn(){
	console.log('函式體提前');
}
//結果:函式體提前

總結:通過var宣告的變數都是將變數名提到當前script塊的頭部,賦值留在原位置,如果在賦值之前訪問變數或函式,返回結果分別是undefined和報錯;