function a(){}這種叫函式宣告, function(){},var fn=function(){},var fn=function a(){}這種是函式表示式,var fn=function a(){}中的a相當於乙個函式區域性變數,只能在這個函式內部使用,如var fn = function fib(n)else}, 在函式外部只能使用fn不能使用fib。
函式宣告會被js引擎提前(hoist),因此函式呼叫可以寫在宣告前面,如fn();function fn(){}正常執行,而fn();var fn=function(){}錯誤。函式表示式只有在直譯器執行到那一行時才進行解釋。
函式宣告可以轉變為表示式,如上面的var fn=function a(){}即被轉變為表示式,同時樣~ + - !和&&,()等運算子也可以。經常見到js**中!function a(){}(),+function a(){}(), (function a(){})(), (function a(){})()。function a(){}()這種寫法是非法的,前面像是函式宣告,後面()是執行函式,把函式宣告轉變為函式表示式就可以了。
函式沒有return預設返回undefined,在函式前面加!是把函式宣告轉變為表示式來執行,執行後這個函式消失,同時!function fn(){}()結果是true。
在js**首行前面加;,因為js可以用空行來分隔**(正常情況下應該用分號),在js被壓縮時,空行會被刪掉,因此你的js首行前面加;是為了防止壓縮js**和你的**之間沒有;而報錯。
JS 函式宣告與函式表示式
函式宣告的function關鍵字放在最前面 函式宣告的函式會整體提公升到頂部 console.log a function a functiona 預編譯時實際順序如下 functiona console.log a 在函式表示式中可省略函式名稱從而建立匿名函式 函式表示式沒有提公升,使用var關鍵...
函式宣告與函式表示式
對函式宣告和表示式加以區別 在解析器向執行環境中載入資料時,對函式宣告和函式表示式並非一視同仁。解析器會先率先讀取函式宣告,並使其在執行任何 之前可以呼叫 至於函式表示式,則必須等到解析器執行到它所在的 行,才會真正被解釋執行。函式宣告 alert hello 返加值 hello function ...
函式宣告與函式表示式
1 function sum num1,num2 1 function sum num1,num2 解析器在向執行環境中載入資料時,會率先讀取函式宣告,並使其在執行任何 前可用 可以訪問 而函式表示式,必須等到解析器執行到他所在的 行,才會被真正解析執行。其它情況都是相同的。1 正常執行 2 ale...