文法要點:Javascript語言區分大小寫,為弱類型變數語言(類似VB)。變數可以不定義直接使用(不推薦)。
函數調用與引用:var one = excute();表示擷取excute這個函數執行的結果(傳回值)而var one = excute;表示引用excute這個函數,把excute這個函數的地址傳給one這個變數。
Js覆蓋規則:當出現多個同名函數時,以最後一個定義的為準,無論在哪調用該函數(即使在最後一個定義之前調用),都將調用最後一個!
Javascript中的函數參數機制:一個函數有多少個參數不是通過函數的定義判斷的,而是通過訪問函數時傳遞了多少個參數判斷。比如function a(x,y),無論括弧裡寫多少個參數都無效,要想傳入參數要在訪問時確定,a(1,2,3);這樣就是傳入了三個參數。因此function a(x,y)、function a()、function a(x)等寫法是沒有任何區別的,函數唯一的區別就是名字,不通過參數區別。細心的讀者可能會發現,假如有一個function a(x,y),存取方法:a(1,2,3),問題來了:我們可以在function中使用x、y形參獲得1、2兩個實參值,但是第三個參數怎麼使用?在js中,每一個function,都會有一個arguments數組,這個數組專門用來存放參數,在本例中,數組的情況是:arguments[0]=1、arguments[1]=2、arguments[2]=3。這樣就不必通過形參訪問參數了,直接存取arguments數組即可!
Js覆蓋規則:當出現多個同名函數時,以最後一個定義的為準,無論在哪調用該函數(即使在最後一個定義之前調用),都將調用最後一個!因為js是解釋執行的語言,在執行前要把整個程式碼片段掃描,因此可以在函數定義之前使用函數。例如,以下代碼輸出為2
<script type="text/javascript">function a(){alert("1");}a();function a(){alert("2");}</script>