一、函數的聲明及調用
1.函數的聲明格式:
function 函數名(參數1,參數2,.....){
//函數體代碼
return 返回值;
}
函數的調用:
1)直接調用:函數名(參數1的值,參數2的值,......);
文檔注釋:
2)事件調用:在HTML標簽中,使用事件名="函數名()"
2.函數的注意事項:
1)函數名必須要符合小駝峰法則,首字母小寫,之后每隔單詞首字母大寫;
2)函數名后面的括號中,可以有參數,也可以沒有參數,分別稱為有參函數和無參函數;
3)聲明函數時的參數列表,稱為形參列表,形式參數。(變量的名字)
調用函數時的參數列表,稱為實參列表,實際參數。(變量的賦值)
4)函數的形參列表個數,與實參列表的個數,沒有實際關聯關系。
函數參數的個數,取決於實參列表。
如果實參列表的個數<形參列表,則未賦值的形參,將為undefined。
1.函數的聲明格式:
function 函數名(參數1,參數2,.....){
//函數體代碼
return 返回值;
}
函數的調用:
1)直接調用:函數名(參數1的值,參數2的值,......);
文檔注釋:
2)事件調用:在HTML標簽中,使用事件名="函數名()"
2.函數的注意事項:
1)函數名必須要符合小駝峰法則,首字母小寫,之后每隔單詞首字母大寫;
2)函數名后面的括號中,可以有參數,也可以沒有參數,分別稱為有參函數和無參函數;
3)聲明函數時的參數列表,稱為形參列表,形式參數。(變量的名字)
調用函數時的參數列表,稱為實參列表,實際參數。(變量的賦值)
4)函數的形參列表個數,與實參列表的個數,沒有實際關聯關系。
函數參數的個數,取決於實參列表。
如果實參列表的個數<形參列表,則未賦值的形參,將為undefined。
5)函數可以有返回值,使用return返回結果
調用函數時,可以使用一個變量接收函數的返回結果。如果函數沒有返回值,則接收的返回值為undefined。
6)函數中變量的作用域:
在函數中使用var聲明的變量為局部變量,只能在函數內部訪問,不用var聲明的變量為全部變量,在函數外面也能訪問。
函數的形參列表默認為函數的局部變量,只能在函數的內部使用。
7)函數的聲明與函數的調用沒用先后之分。即,可以在聲明函數前,調用函數。
調用函數時,可以使用一個變量接收函數的返回結果。如果函數沒有返回值,則接收的返回值為undefined。
6)函數中變量的作用域:
在函數中使用var聲明的變量為局部變量,只能在函數內部訪問,不用var聲明的變量為全部變量,在函數外面也能訪問。
函數的形參列表默認為函數的局部變量,只能在函數的內部使用。
7)函數的聲明與函數的調用沒用先后之分。即,可以在聲明函數前,調用函數。
二、 匿名函數的聲明和使用
1.聲明一個匿名函數,直接賦值給某一個事件;
2.使用匿名函數表達式。將匿名函數,賦值給一個變量。
聲明:var func=function(){ }
調用:func();
注意:使用匿名函數表達式時,函數的調用語句,必須放在函數聲明語句之后!!!(與普通函數的區別)
【js代碼的執行順序問題】
js代碼在運行時,會分為兩大部分。檢查裝載和執行階段。檢查裝載階段:會先檢測代碼的語法錯誤,進行變量、函數的聲明
執行階段:變量的賦值、函數的調用等,都屬於執行階段。
以下代碼為例:
原因:上述代碼的執行順序為:
---------------檢查裝載階段--------------
var num;
function func1(){};
function func2;
---------------執行階段--------------
console.log(num);
func1();
func2()=function(){};
3.自執行函數:
1)可以使用多種運算符開頭但一般用!
!function(形參列表){}(實參列表)
2)使用()將函數及函數后的括號包裹
(function(){}());
3)使用()值包裹函數值
(function(){})();
1.聲明一個匿名函數,直接賦值給某一個事件;
2.使用匿名函數表達式。將匿名函數,賦值給一個變量。
聲明:var func=function(){ }
調用:func();
注意:使用匿名函數表達式時,函數的調用語句,必須放在函數聲明語句之后!!!(與普通函數的區別)
【js代碼的執行順序問題】
js代碼在運行時,會分為兩大部分。檢查裝載和執行階段。檢查裝載階段:會先檢測代碼的語法錯誤,進行變量、函數的聲明
執行階段:變量的賦值、函數的調用等,都屬於執行階段。
以下代碼為例:
原因:上述代碼的執行順序為:
---------------檢查裝載階段--------------
var num;
function func1(){};
function func2;
---------------執行階段--------------
console.log(num);
func1();
func2()=function(){};
3.自執行函數:
1)可以使用多種運算符開頭但一般用!
!function(形參列表){}(實參列表)
2)使用()將函數及函數后的括號包裹
(function(){}());
3)使用()值包裹函數值
(function(){})();
三種寫法特點:
1)使用!開頭,結構清晰,不容易混亂,推薦使用;
2)能夠將匿名函數與調用的()為一個整體,官方推薦使用;
3)無法表明函數與之后的()的整體性,不推薦使用。
三、函數的內部屬性
1.Arguments對象
1)作用:用於儲存調用函數時的所有實參。
>>>當調用函數,並用實參賦值時,實際上參數列表已經保存到arguments數組中,可以在函數中,使用arguments[n]的形式調用,n從0開始。
2)arguments數組的個數,取決於實參列表,與形參無關。但是,一旦第n個位置的形參、實參、arguments都存在時,形參將與arguments綁定,同步變化。即,在函數中,修改形參的值,arguments也會改變,反之亦成立。
3)arguments.callee是arguments的重要屬性。表示arguments所在函數的引用地址;
在函數里面,可以使用arguments.callee()調用函數本身。
在函數內部,調用函數自身的寫法,叫做遞歸。
遞歸分為兩部分:遞和歸。以遞歸調用語句為界限,可以將函數分為上下兩部分。
遞:當函數執行上半部分。遇到自身的調用語句時,繼續進入內層函數,再執行上半部分。直到執行完最內層函數。
歸:當最內層函數執行以后,再從最內層函數開始,逐漸執行函數的下半部分。
當最外層函數執行時,遇到自身的調用語句,會進入內層函數執行,而外層函數的后半部分不執行。直到最內層函數執行完以后,再逐步向外執行。
location對象
取到瀏覽器的URL地址信息;
完整的URL路徑:
協議名://主機名(ip地址):端口號/文件所在路徑?傳遞參數(name1=value1&name2=value2) #錨點
例如:
http://127.0.0.1:8080/wenjian/index.html?name=jredu#top
其他使用location提供的方法跳轉頁面的方式
history:瀏覽歷史
history:瀏覽歷史
