即function語句的集合,就是將多個語句封裝到一起;
函式的執行要會自己遍歷,遇見函式 a();執行語句,就要移交控制權,函式執行完畢之後,控制權又移交回來了!
函式的引數要羅列在function定義的圓括號內sum(a,b),用逗號隔開,叫做形式引數,呼叫的時候,圓括號裡面是實際引數sum(1,2),引數在js中不用指定型別,呼叫的時候引數個數也可以和定義的時候不一樣。
1 //函式宣告頭的提公升,程式一開始就會有乙個預解析的過程,程式會通看全部**,把所有的函式名字都放到開頭預習一下,程式自己知道了,頁面上有這個函式定義。但是,函式的引數和返回值
2 function
sum(a,b)
67 //
矮化為表示式了
console.log(sum(1,2));
函式表示式是不能預解析的
。敲黑板!!!
函式表示式:如var a = function(); 。
function沒有名字,只是個匿名函式,a不是函式的名字,變數a是匿名函式的乙個引用而已!!!
//a1()會正常彈窗!函式宣告頭的提公升
a1();
a2();
function
a1()
//函式表示式是不能預解析的
var a2 = function
()
a2()會報錯;函式表示式是不能被預解析的(劃重點要考)
如果同乙個識別符號,在程式中又是變數的名字,又是函式的名字,解析器會把識別符號給函式。
a();在a();之前函式已經把function a();預解析了。a就是函式了,雖然變數a也有乙個變數宣告頭的提公升,但是幹不過函式宣告頭的提公升,所以a()就會執行函式;var a=1;
function
a()
var a=1;1.在執行var a = 1之前,函式已經把function
a() a();
function a()
預解析了,程式就已經知道頁面上有乙個函式叫做a。
2.但是開始執行程式之後,定義了乙個變數
a,所以識別符號
a,就又變成變數了。
3.遇見
function
定義,程式會無視,因為已經預解析了。直到
a()執行的時候,
a就是變數,無法執行,報錯。
上面三點可能有點繞,需要慢慢理解,仔細琢磨!
var a=1;有沒有想過,這種寫法竟然可以被執行,?????var a= function
() a();
因為上文提到函式表示式 var a= function() 是不會被預解析的,程式剛執行時a是乙個變數,後來又遇見乙個函式的引用a;所以最後這個識別符號a就是函式;
a();var a=1;
var a= function
()
console.log(a);函式表示式是不會預解析的,所以預解析的就是變數a的定義,就是var a=1;
var a= function
()
undefined
,undefined
是無法執行的。
Function函式的宣告方式
函式是一段可以反覆利用的 通過變數,把函式儲存到變數容器裡 var a function 因為沒有名字也被稱為匿名函式 後續需要呼叫 塊可直接使用變數名 a 直接宣告函式,function a 呼叫 塊方法 a 在函式內部呼叫自身的宣告方式。var a function text 建構函式var a...
函式宣告之function與var
紙上得來終覺淺,絕知此事要躬行。軟體這行業,很多東西還是要靠敲 敲出來的,你以為看書看的很通透,例子也能做出來的東西,一需要深入混合運用頓時覺得懵逼了。關鍵還是在於一知半解,不夠深入。今天我就總結一下近段時間遇到並糾結過的一些知識。老規矩,由淺入深,用發散性思維思考每個知識點。一 宣告乙個函式 fu...
函式表示式 和函式宣告function的區別
表示立即執行乙個函式表示式,拆分來看第乙個括號裡的是乙個函式宣告,第二個括號表示立即執行這個表示式,下面我們來理解一下什麼是函式表示式和函式宣告。區分函式表示式和函式宣告的區別在於function的位置,如果function不是出現在一段函式的第乙個詞,那麼這是乙個函式表示式,若function是第...