js中的函數

來源:互聯網
上載者:User

標籤:def   自身   結構   同步   idt   dfa   代碼   訪問   blog   

一、函數的聲明及調用  1、函數的聲明格式: 
function 函數名(參數1,參數2,....){    //函數體代碼  return  傳回值;  }

 2、函數的注意事項:

  ①函數名必須要符合小駝峰法則!!(首字母小寫,之後每個單字首大寫);  ②函數名後面的()中,可以有參數,也可以沒有參數。分別稱為有參函數和無參函數;  ③ 聲明函數時的參數列表,稱為形參列表,形式參數。(變數的名字)  function saySth (str,color){}  調用函數時的參數列表稱為實參列表,實際參數。(變數的賦值)  saySth("哈~哈~~哈~~~","blue");  ④ 函數的形參列表個數,與實參列表個數,沒有實際關聯關係。  函數參數的個數,取決於實參列表。  如果實參列表的個數<形參列表,則為賦值的形參,將為undefined。  ⑤ 函數可以有傳回值,使用return返回結果;  調用函數時,可以使用一個變數接受函數的返回結果。如果函數沒有傳回值,則接受的結果為undefined;   
 function func(){
    return "haha";}var num = func();//num = haha
document.write(num);

 

  ⑥函數中變數的範圍:  在函數中,使用var聲明的變數,為局部變數,只能在函數內部訪問;  不使用var聲明的變數,為全域變數,在函數外也能訪問;  函數的形參列表,預設為函數的局部變數,只能在函數的內部使用。  ⑦函數的聲明與函數的調用沒有先後之分,可以在聲明函數前調用函數。   func(); //聲明func之前調用也是可以的;  function func(){}  二、 函數的調用:  ①直接調用:函數名(參數1的值,參數2的值,....);  ②事件調用:在HTML標籤中,使用事件名="函數名()" 
   <button onclick="saySth(‘妖妖妖‘,‘black‘)">點擊按鈕,列印內容</button>

 

/**         文檔注釋:開頭兩個*。寫在函數的上方,在調用函數時,可以看到文檔中的描述息*/ /***str:您想要列印的內容;* color:您想要顯示為什麼顏色;*/
function saySth (str,color) {document.write("<div style=‘color:"+color+";‘>"+str+"</div>");}

 

三、 匿名函數的聲明使用   1、聲明一個匿名函數,直接賦值給某個事件;
window.onload = function(){}

 

2、使用匿名函數運算式。將匿名函數,賦值給一個變數;
var func = function(){}//聲明func();//調用

 

  注意:使用匿名函數運算式時,函數的調用語句,必須放在函式宣告語句之後!!!!(與普通函數的區別!!)  3、自執行函數:  ①!function(){}();//可以使用多種運算開頭,但一般用驚嘆號(!);  !function(形參列表){}(實參列表);
!function(){      alert(789) ;         }();

 

    ②(function(){}());//使用()將函數及函數後設的小括弧包裹起來;
(function(num){      alert(num) ;         }(789));

 

    ③(function(){})();//使用()值包裹函數部分;
(function(num){      alert(num) ;         })(789);

 

    【三種寫法的特點】  ①使用!開頭,結構清晰,不容易混亂,推薦使用;  ②能夠表明匿名函數與調用的()為一個整體,官方推薦使用;  ③無法表明函數與之後的()的整體性,不推薦使用;  、函數的內部屬性    1、Arguments對象  ①作用:用於儲存調用函數時的所有實參。  >>>當調用函數,並且實參賦值時,實際上參數列表已經儲存到arguments數組中,可以在函數中,使用arguments[n]的形式調用。n從0開始。   ②arguments資料的個數,取決於實參列表,與形參無關。  但是,一旦第n個位置的形參、實參、arguments都存在時,形參將於arguments綁定,同步變化,(即,在函數中修改形參的值,arguments也會改變。反之,也成立。) 
function func (a,b,c,d,e) {       alert(arguments[2]);       alert(c);       c = 1 ;       alert(arguments[2]);                       console.log(arguments);    }             func(1,2,"haha",4,5);

 

  ③arguments.callee是arguments的重要滑鼠。表示arguments所在函數的引用地址;  在函數裡面,可以使用arguments.callee()調用函數本身。    在函數內部,調用函數自身的寫法叫做遞迴。  遞迴分為兩部分:遞和歸。以遞迴調用語句為界限,可以將函數分為上下兩部分。     遞:將函數執行上半部分,遇到自身的調用語句時,繼續進入內層函數,再執行上半部分。知道執行完最內層函數。     歸:當最內層函數執行以後,再從最內層函數開始,逐漸執行函數的下半部分。      當最外層函數執行時,遇到自身的調用語句,會進入內層函數執行,而外層函數的後半部分暫不執行。直到最內層 函數執行完以後,再逐步向外執行。  
/* * 遞迴和調試             */            var num = 1;function func(){    console.log(num);    num++;    if(num<=4){        arguments.callee();    }    num--;    console.log(num);}func();

 

     五、js代碼對的執行順序問題   js代碼在運行時,會分為兩大部分。檢查裝載 和 執行階段;  檢查裝載階段:會先檢查代碼的語法錯誤,進行變數、函數的聲明。  執行階段:變數的賦值、函數的調用等,都屬於執行階段。   以下列代碼為例子: 
 console.log(num);//Undefined var num = 10;   func1();          //函數正常執行  function func1(){}   func2();          //函數不能執行,列印func2時顯示Undefined  var func2 = function(){}   原因:上述代碼的執行順序為:--------檢查執行階段----------  var num;  function func1(){}  var func2;   --------代碼執行階段----------  console.log(num);  func1();  func2();

 

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.