這篇我會記錄看教學影片所筆記的一些內容,用來幫助理解函式的一些觀念。
函式是屬於一種資料形式,所以可以放進變數裡面,比如說:
function add(n1,n2){
alert(n1+n2);
}
//可以放進變數內寫成以下寫法
var add = function add(n1,n2){
alert(n1+n2);
}
接續上方的例子,上面的程式碼已經定義add這個變數的資料為function add(n1,n2){alert(n1+n2)
這組函式,所以我們可以使用這個變數執行函式:
add(2,8)
用法一樣是add(n1,n2),將資料填入後會帶入函式內運算執行。
關於函式部分可以看做,函式用來創造一個新的空間,一般來說如果使用宣告變數,不能再重複一樣的變數名稱做宣告,但是函式內部是一個獨立空間,所以可以在函式內宣告跟函式外一樣的變數名稱,函式會優先在內部尋找宣告,如果找不到符合的變數才會向外部尋找。
程式碼的規則中,會優先在同一個空間尋找變數,找不到才會向外空間尋找,不會往內尋找。
函式外的空間稱為全域空間,在這個地方宣告的變數為全域變數。
函式內的空間則被稱為區域空間,在函式內宣告的變數則為區域變數。
全域空間的程式碼則不能使用區域空間內的變數做運算
舉個例子來說:
var x=3
function test(){
var x = 5;
var y = 10;
alert (x+y);
}
上方程式碼中,在function test外的宣告變數,不能重複宣告var x,function test可以看做是一個區域空間,在這區域空間內就可以宣告與函式外一樣的變數名稱,但是區域變數只有在這個區域空間內有用,以上方的範例來說,會跳出15,但是如果向下方程式碼一樣,刪除了function test內的變數x,則會因為內部沒有宣告為x的變數而往外部空間尋找,這時候就會找到上方第一行寫的var x=3 ,此時這個函數就會跳出13。
var x=3
function test(){
var y = 10;
alert (x+y);
}