(function(model){ //... })(model || model={});
JS 要如何宣告一個 function 呢?
function a(){ //... }
那改成變數的方式宣告呢?
var a = function(){ //... };
要怎麼呼叫上面宣告的 function?
a();
再來把 a 換成等於右邊的 function 宣告。
function(){ //... }();
上面的寫法不符合語法,再加上 () 吧!
(function(){ //... })();
接著 model || model={} 是透過 or 判斷句的特性,遇到第一個為真就回傳,看看下面的例子:
var a = 1 || 2 || 3; // 1 var a = 0 || 2 || 3; // 2 var a = 0 || 0 || 3; // 3
為什麼要用這種寫法呢??
首先 JS 沒有所謂的 block 變數,在 for 內宣告的變數,外面也能直接存取,唯一能侷限變數存取域的只有 function,在 function 內宣告的變數只有內部能存取,外部是看不見的,所以透過這個方法可以避免變數命名衝突的問題。
再來透過傳入 function 的變數,外部是無法在更動的,變數的參考點在呼叫 function 就固定下來,外部無法在異動內部所存取的參考點,這樣可以避免參考的變數內容被其他套件程式修改,而造成執行錯誤。
0 回應:
張貼留言