iT邦幫忙

DAY 3
6

網頁開發五四三系列 第 3

function , script block in JavaScript (函式,腳本區)

主要分享在 JavaScript 程式中,變數有效執行區域
這一次要分享的內容,是這兩天與我同事(Ryan)討論之下,所學習到的心得

剛好藉由這一次鐵人賽,將討論的結果整理成文章

整理文章的過程中,因為技術上的養成還太嫩,所以在定義名詞上有些弱

如果看到文章中覺得怪怪的詞,不用懷疑....你是對的!!(也歡迎你給予指導)

剛接觸JavaScript,如果要寫一個function,我會是這樣子的寫法

function fun1(a,b)
{
	//	doSomething....
}

後來,看到了有其它的寫法,如下:

var fun1 = function(a,b){
	//	doSomething....
};

將一個function存到一個變數

剛學JavaScript的時候,覺得這寫法很酷,也很特別

且用法也都一樣 fun1(5,10) 就可以呼叫function.

後來,經過學習,慢慢發現它們之間的不同

在第一種寫法,它在 parse-time 時,就將function宣告好了

而在第二種寫法,它會是在 run-time 時,才會宣告

先以第二種寫法為說明,範例如下:

// 會出現Error
functionOne();  //  先呼叫
var functionOne = function() {  // 但function此時才宣告function
}

再回到第一種寫法,範例如下:

functionTwo();  //  因為parse-time已經宣告,所以就可以正常呼叫
function functionTwo() {  //  此function在 parse-time時就已經宣告了
}

這就是差在 parse-time 與 run-time 對 function 宣告時機點

再稍為解釋一下關於第二種寫法,就以我個人描述,我會這麼說....

「將一個匿名函式存入fun1變數中」

同事提到,因為 fun1 變數是存入一個匿名函式,所以要加一個分號

就像 var a = 1; 的描述方式是一樣的(我也滿認同這個說法,也剛好將這兩種寫法做個差異)

再補充一個立即函式的寫法(我想,這也算是匿名函式,只是它馬上被執行了)

(function(s){
	alert(s);
})('c');

以上,主要是舖陳了我接下來要分享的內容…

期待連假第一天的文章,待續….(幻想有人在等待...)


上一篇
利用 GD 產生圖片,提供 HTML type="image" 使用
下一篇
function , script block in JavaScript (函式,腳本區) 2
系列文
網頁開發五四三12

2 則留言

我要留言

立即登入留言