JavaScript函數與定義的function關鍵字。
您可以使用函數聲明或函數表達式 。
函數聲明
在本教程的前面,你了解到函數的語法如下聲明 :
function functionName ( parameters ) {
code to be executed
}
聲明的函數不立即執行。 他們是“保存以備後用”,並且將在以後執行,當他們被調用(呼籲)。
分號用於分隔執行JavaScript語句。
由於函數聲明不是可執行語句,它不是常見的以分號結束它。
函數表達式
一個JavaScript功能也可使用表達式定義。
函數表達式可以被存儲在一個變量:
函數表達式已經被存儲在一個變量之後,該變量可以作為一個功能:
上面的函數實際上是一個匿名函數 (沒有名字的函數)。
存儲在變量的函數不需要函數名。 他們總是調用(調用)使用變量名。
因為它是一個可執行語句的一部分,上面的函數以一個分號結束。
該Function()構造函數
正如你在前面的例子中所看到的,JavaScript函數與定義的function關鍵字。
函數也可以用內置的JavaScript函數構造器調用定義Function()
你其實不必使用函數構造函數。 上面的例子是一樣的文字:
在大多數情況下,你可以盡量避免使用new JavaScript中的關鍵字。
Function Hoisting
在本教程早些時候,您了解了"hoisting" 。
起重是JavaScript的移動聲明到當前範圍的頂部的默認行為。
起重適用於變量聲明和函數聲明。
正因為如此,JavaScript函數可以在聲明之前被調用:
myFunction(5);
function myFunction(y) {
return y * y;
}
使用表達式定義的函數不懸掛。
自調用函數
函數表達式可以做成“自我調用”。
一個自調用表達式自動調用(啟動),沒有被調用。
如果表達式後跟函數表達式將自動執行()
你不能自調用函數聲明。
你必須添加周圍功能括號以表明它是一個函數表達式:
上面的函數實際上是一個匿名的自調用函數 (沒有名字的函數)。
函數可以用作值
JavaScript函數可以被用作值:
JavaScript函數可以在表達式中使用:
函數是對象
該typeof在JavaScript中運算符返回"function"的功能。
但是,JavaScript函數可以被描述為對象。
JavaScript函數同時擁有屬性和方法 。
arguments.length屬性返回被調用函數時收到的參數個數:
的toString()方法返回函數的字符串:
定義為一個對象的屬性的函數,稱為對象的方法。
旨在創建新的對象的函數,稱為對象的構造函數。