定義函式的三種方式:
一、函式宣告
函式宣告是以關鍵字開頭的,它有乙個明顯的特徵:
函式宣告的提公升
,js在解析**時將函式宣告提公升到當前作用域的頂部,所以把函式宣告放在呼叫他的語句後面
foo("hello
"); //
輸出 hello
function foo(name)
函式宣告與表示式的區分
就是看關鍵字function在宣告中的位置,他的位置是整個函式中的位置,如果function是宣告中的第乙個位置,那就是函式宣告,否則就是表示式
1 (function()());//函式表示式
23 +function test()//
函式表示式
45 (function(),1000);
2.差異
名稱和識別符號的繫結位置
1var a = 2;2
function foo()
6foo();
7 console.log( a ); //28
9/*---------
*/10
11(function foo())();
15 console.log( a ); //
2
第乙個片段中的foo被繫結在所在作用域中,可以通過foo()來呼叫,第二個片段中foo被繫結在函式表示式自身的的函式中而不是作用域中
也就是說匿名函式作為函式表示式意味著foo只能在它所代表的位置訪問,也就是指區域性作用域,優點就是不會被全域性汙染
二、匿名與具名函式
1 setinterval(function(),1000);4589var funa = function()
1213
var funb =function test()
三、立即執行函式
1var express=function () (); //
執行,發現函式直接執行,結果輸出了"hello word!"67
89function () (); //
報錯 uncaught syntaxerror: unexpected token )
1415
//因為以function開頭,認為是函式宣告,結果沒有函式名,就報錯了
1617
1819
function foo() (); //
報錯 uncaught syntaxerror: unexpected token )
在函式表示式後面緊跟一小括號(),函式就會立即執行,兩大要點:表示式、括號()
(function 函式名稱(可寫可不寫) (引數) ());
立即執行函式只要知道只有表示式才能執行,函式表示式也會被執行,其他除外
函式宣告與表示式
1.函式的呼叫方式 2.函式的建立有兩種常用的方式 函式宣告和函式表示式,還有一種不常見的叫函式構造器 2.1.函式宣告 2.2.函式表示式 有以下幾種定義方式。最後一種叫命名函式表示式,不常用,遞迴時可能用到。函式宣告和函式表示式最大的區別是函式宣告會被前置。左側的函式宣告可以執行,右側的函式表示...
函式宣告與函式表示式
對函式宣告和表示式加以區別 在解析器向執行環境中載入資料時,對函式宣告和函式表示式並非一視同仁。解析器會先率先讀取函式宣告,並使其在執行任何 之前可以呼叫 至於函式表示式,則必須等到解析器執行到它所在的 行,才會真正被解釋執行。函式宣告 alert hello 返加值 hello function ...
函式宣告與函式表示式
1 function sum num1,num2 1 function sum num1,num2 解析器在向執行環境中載入資料時,會率先讀取函式宣告,並使其在執行任何 前可用 可以訪問 而函式表示式,必須等到解析器執行到他所在的 行,才會被真正解析執行。其它情況都是相同的。1 正常執行 2 ale...