1.函式定義
//函式宣告語句
//"被提前"到外部指令碼或外部函式作用域的頂部,所以以這種方式宣告的函式,可以被在它定義之前出現的**所呼叫。
function haha()
//函式表示式
//使用前必須先把它賦值給乙個變數
var haha=function()
巢狀函式,巢狀的函式可以訪問巢狀它們(或多重巢狀)的函式的引數和變數。
function haha(a,b);
//ha函式可以訪問到父級函式的引數
return ha(a)+ha(b);
}
2.函式的實參與形參
(1)可選形參
當呼叫函式的時候傳入的引數比函式宣告時指定形參個數要少,剩下的形參都將設定為undefined值。
haha(1);
function haha(a,b)
(2)可變長的實參列表:實參物件
在函式體內識別符號arguments是指向實參物件的引用,實參物件是乙個類陣列物件。
haha(1,2);
function haha(a,b)
(3)將物件屬性用作實參
當乙個函式有多個形參時,要記住實參的呼叫順序就比較麻煩了,可以通過傳入乙個物件來實現。
var o=;
haha(o);
function haha(o)
3.作為命名空間的函式 在乙個命名空間定義的變數不會影響到全域性命名空間。
//匿名的函式表示式
(function()());
/*定義乙個擴充套件函式,用以將第二個以及後續引數複製至第乙個引數
這裡需要處理乙個ie的bug,如果某個物件o中的屬性有與物件中同名的不可列舉屬性的話,
用for/in迴圈不會列舉物件o的可列舉屬性,比如不會處理tostring等屬性。
除非我們顯式檢測它。
*/var extend=(function())}};
} //如果執行到這裡,說明有bug
return function patched_extend(o)
//檢查特殊屬性
for(var j=0;j}
}}; //這個列表列出了需要檢查的特殊屬性
var protoprops=['tostring','valueof','contructor','hasownproperty','isprototypeof','properyisenumerable','tolocalstring'];
}());
JavaScript入門指南 6
建構函式 var obj new object obj.name tom obj.age 23 alert obj.name tom alert obj.age 23 物件字面量 var obj obj.name tom obj.age 23 alert obj.name tom alert obj...
JavaScript入門指南 7
var names1 new array 建立乙個空的陣列 var names2 new array 20 建立乙個長度為20的陣列 var names3 new array rose jerry tom 建立長度為3並且三個值分別為rose,jerry,tom的陣列 alert names1.le...
JavaScript權威指南 文件載入事件
大部分web應用都需要web瀏覽器通知他們文件載入完畢和為操作準備就緒的時間。window物件的load事件就是為了這個目的。load事件直到文件和所有載入完畢時才發生。然而,在文件完全解析之後但在所有全部載入完畢之前開始執行指令碼通常是安全的,所以如果基於 load 發生之前的事件觸發指令碼會提公...