function 函式物件

JS 的一級物件 (first class object)

  • 可以被動態建立
  • 可以指定給變數
  • 可以擴展屬性或方法

提供了變數的作用域 (scope)

  • 不以區塊 {} 建立作用域
var test = function () {
    console.log('this is test func.');
};
typeof(test);    // function
test.child = {};    // 可擴增屬性
test;    // 不使用 () 回傳 function 物件
test();    // 使用 () 執行

函式表示式

var a = function test() {    // 具名函式
    // do something...
};
var b = function () {    // 匿名函式
    // do something...
};

函式宣告式

function test() {    // 可以直接從 window 根物件下找到此函式
    // do something...
}

區域變數

  • 是靠著 function 提供的 scope 作為區隔
  • 宣告變數時會成為內部物件的屬性或變數
function test() {
    var name = 'Tony';
}

全域變數

  • 代表根物件的屬性或變數
function test() {
    address = 'Taiwan';
}

test();
console.log(address);    // Taiwan

副作用其實不少,光命名衝突就包含以下狀況了。

  1. 第三方的 JavaScript Library
  2. 廣告方的腳本
  3. 第三方的用戶跟蹤和分析代碼
  4. 自定義不同的類型組件

保持良好的撰寫習慣可以省去不少踩雷除錯的時間。

results matching ""

    No results matching ""