JS學習三(函數)

來源:互聯網
上載者:User

標籤:顯示   重要   round   學習   ack   返回   位置   代碼執行   文法   

【函數的聲明格式】
1.函數的聲明格式:
function 函數名(參數1,參數2,...){
  函數體代碼
  return 傳回值;
}


函數的調用:
① 直接調用:函數名(參數1的值,參數2的值,....);
② 時間調用方式:直接在html標籤中,使用事件名="函數名()"
<button ondblclick="saySth(‘哈哈哈‘,‘yellow‘)">點擊按鈕,列印內容</button>
2.函數的注意事項:
① 函數名必須符合小駝峰法則,(首字母小寫,之後每個單字首大寫)
② 函數名後面的()中,可以有參數,也可以沒有參數,分別稱為 有參函數 和 無參函數;
③ 聲明函數時的參數列表,稱為形參列表,形式參數。(變數的名字)
function saySth(str,color){}
調用函數是的參數列表,稱為實參列表,實際參數。(變數的賦值)
saySth("hello!!!","red");

④ 函數的形參列表個數,與實參列表個數,沒有實際關聯關係。
函數參數的個數,取決於實參列表。
如果實參列表的個數<形參列表,則為賦值的形參,將為Undefind。
⑤ 函數可以有傳回值,使用return返回結果。
調用函數時,可以使用一個變數接受函數的返回結果。如果函數沒有傳回值,則接受的結果為undefined;
function fun(){
  return "哈哈";
}
var num = func();   num="哈哈"
⑥ 函數中變數的範圍:
在函數中,使用var聲明的變數,為局部變數,只能在函數內部訪問;
不用var聲明的變數,為全部變數,在函數外面也能訪問;
函數的形參列表,預設為函數的舉局部變數,只能在函數內部使用。
⑦ 函數的聲明與函數的調用,沒有先後之分。即,可以在聲明函數前,調用函數。
fun(); //聲明之前調用可以。
function fun(){}

 

【匿名函數的聲明使用】
1.聲明一個匿名函數,直接賦值給某一個事件。
window.onload= function(){}
2.使用匿名函數運算式。將匿名函數,賦值給一個變數。
聲明:var func=function (){}
調用:func();

注意:使用匿名函數運算式時,函數的調用,必須放在函式宣告語句之後!!!
(與普通函數的區別)
3.自執函數:
① !function(){}();    可以使用多種與運算子開頭,一般用!
!function(形參列表){}(實參列表);
② (function(){}());    使用()將函數集合函式後的括弧包裹。
③ (function(){})();    使用()值包裹函數部分;

三種寫法的特點
① 使用!開頭結構清晰,不容易混亂,推薦使用;
② 能夠表明匿名函數與調用的()為一個整體,官方推薦使用;
③ 無法表示函數與之後剖的()的整體性,不推薦使用;

 

【函數的內部屬性】
1.Arguments對象
① 作用:用於儲存調用函數時的所有實參。
當我們調用函數,並用實參賦值時,實際上 到arguments數組中, 可以在函數中,使用arguments[n]的形式調用。n從0開始。

② arguments數組的個數,取決於實參列表,與形參無關。
但是,一旦第N個位置的形參、實參、arguments都存在時,形參將於arguments綁定,同步變化。
(即在函數中修改形參的值,arguments也會改變。反之,亦成立。)
③ arguments.callee 是arguments的重要標誌。表示arguments所在函數的引用地址;
在函數裡面,可以使用arguments.callee()調用函數本身。

遞迴
在函數內部,調用函數自身的寫法,叫做遞迴。
遞迴分為兩部分: 遞 和 歸。 以遞迴調用語句為界限,可以將函數分為上下兩部分。
遞:當函數執行上半部,遇到自身的語句時,繼續進入內層函數,在執行上半部分。直到執行哇按最內層函數。
歸:當內層函數執行以後面,在從最內層函數開始,逐漸執行函數的下半部分。

當最外層函數執行時,遇到自身調用語句,會進入內層函數執行,而外層函數的後半部分暫不執行。
直到內層函數執行完以後,在逐步向外執行。

 

【js代碼的執行順序問題】
js代碼在運行時,會分為兩大部分:檢查裝載和執行階段
檢查裝載階段:會先檢測代碼的語法錯誤,進行變數、函數的聲明。
執行階段:變數得瑟賦值、函數的調用等,都屬於執行階段。

以一下代碼為例:
console.log(num);   Undefine
var num=10;

func1();    函數可以正常執行
function func1(){}

func2();    函數不能執行,列印func2,顯示Undefine
var func2= function(){}


-----------檢查裝載階段----------
var num;

var func1 = function(){};

var func2;

----------------------------------------

-----------代碼執行階段----------
console.log(num);
var num = 10;

func1 ();

func2 ();
func2 = function(){}

----------------------------------------



console.log(num);    Undefine
var num=10;

func1();    函數可以正常執行
function func1(){}

func2();    函數不能執行,列印func2,顯示Undefine
var func2= function(){}


JS學習三(函數)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.