JavaScript 函數筆記1
當要輸出的數字中出現逗號時(例如59,123),可以使用toLocaleString()方法,
並向他傳入"eu-US",用法為變數.toLocaleString("eu-US")即可。
例如:
輸出:
三元運算符可以幫助避免冗長的if...else語句
用法: condition ? (if condition is true) : (if condition is false)
?左邊為條件,
?和:中間為條件成立時,所要執行的Code
:右邊為條件不成立時,所要執行的Code
範例:
程式碼:
JavaScript 函數的表示方法: function 函數名稱(任何形態傳入的參數){code to be executed }
例如:
Parameter 與 Argument 最主要差別是出現在Code的何處
Parameter 是變數名稱,並且出現在函數宣告的變數。
Argument 是一個值(任何資料型態),會出現在呼叫函數被傳遞到函數中的值。
例如:
上圖中,紅框即為Parameter,綠框為Arguments
作用域
JavaScript 中將作用域(scope)分為兩種,全域作用域(global scope)與函數作用域(function scope),
全域作用域(global scope) :在所有函數中去定義的變數,會被稱為全域作用域的一部分
也就表示在program中的任意位置都可以去存取在全域作用域裡定義的變數
函數作用域(function scope) : 在函數內部定義的變數,她只能在該函數中的任意位置被存取。
若是此函數為多層的函數,則他會首先查看變數是否在當前函數中被定義,
若沒有,則查看外面一層的函數,以此類推,
直到都沒有找到變數的話,則返回錯誤
覆蓋
上圖中,全域作用域定義的變數名稱與函數作用域裡的變數名稱一樣,
則在函數中的變數x會重新賦值給全域變數的x。
即使我們離開函數,全域變數已經被更改了,
輸出:
為了防止這種情況的出現,在函數內部重新創造一個變數x,而不是直接將x重新賦值。如圖
輸出:
提升
在JavaScript 中,它會自動地將函數聲明和變數聲明提升至作用域的頂部,
但是賦予變數值並不會提升
函數表達式
在JavaScript中,變數可以儲存任何的內容,這也包括函數,
而儲存在變數中的函數就叫做函數表達式。
例如:
圖中,看到 function 沒有函數名稱,他是一個匿名函數,
即使沒有函數名稱,但是你將它儲存在catSays變數中,
所以當你要呼叫函數時,可以直接運用catSays()來呼叫函數即可。
函數表達式不會進行提升的動作,因為他們涉及到變數賦值,因此不會提升。
內嵌函數表達式
原式:
通過將函數內嵌給movies()函數:
匿名內嵌函數表達式通常與可能不會在其他地方重複使用的函數一起使用,如此可以省下不少Code。