JavaScript學習路-(10)Function-2

function 除了上一篇提到的函數宣告式寫法
function identifier (Arguments) {
statements...

return theValue;
}
以外,還有不同的寫法:

我叫做具名函式具名表現式:寫法是定義變數為一個有名字的函式
var hello = function identifier(Arguments) {
return Arguments;
}

我叫做匿名函式函式表現式:特點是沒有函式名字
var hello = function (Arguments) {
return Arguments;
}

這兩個式子讓函式變成變數,一樣可以用!

這裏插播一下函式的特性叫做 Function hoisting,雖然不知道要翻成什麼名詞,總之就是背起來…
codecademy 教學頁寫到:
「The two ways of declaring functions produce different results. Declaring a function one way “hoists” it to the top of the call, and makes it available before it’s actually defined.」
大概意思就是函式會被吊到最上面,依照程式從第一行開始跑的特性,就算函式沒有寫在第一行依然可以宣告,但僅限於函數宣告式

所以宣告函數可以這樣用:
helloA();
function helloA () {
alert("Its a function A!");
}

但如果想宣告具名函式或匿名函式的話這樣寫就叭叭~出現錯誤: Uncaught TypeError: undefined is not a function
helloB();
helloC();

var helloB = function helloB() {
alert("It
s a function B!”);
}
var helloC = function () {
alert(“Its a function C!");
}

換個順序就可以正常運作:
var helloB = function helloB() {
alert("It
s a function B!");
}
var helloC = function () {
alert("It`s a function C!");
}
helloB();
helloC();

參考出處:
Javascript 開發學習心得 – 函數的多種寫法與應用限制
JavaScript Glossary

本文同步發表於 http://ithelp.ithome.com.tw/ironman7/app/#/article/dev/recent/10156987

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Time limit is exhausted. Please reload the CAPTCHA.