JS之arguments屬性解讀函數傳參?

來源:互聯網
上載者:User

標籤:style   blog   io   color   ar   使用   sp   strong   div   

Arguments
  該對象代表正在執行的函數 和 調用他的函數的參數。

  arguments屬性:為當前執行中的 Function 對象返回 arguments 對象 和 參數。

[function.]arguments[n]

參數說明:

  參數function :選項。當前正在執行的 Function 對象的名字。

  n:表示傳遞過來的參數下標索引

1.對於參數對象
  說明:Arguments是進行函數調用時,除了指定的參數外,還另外建立的一個隱藏對象。

    <script>var result =function(){   alert(arguments.length);  //返回2
  alert(argument[0]); //返回123};result(123,‘nihjao‘); </script>
可知:在沒有定義形式參數變數的情況下愛,也傳過來了參數,並被arguments接受。所以arguments是一個隱藏對象

在函數中定義形參接受參數

var result =function(y){    alert(y);  alert(result.arguments[0]);  //返回123  alert(arguments[1]);      //返回 nihao  alert(arguments.length);    //返回 2 arguments.length是指實參長度  alert(arguments.callee.length);  //返回1 arguments.callee.length是形參長度};result(123,‘nihjao‘);    </script>
此時:函數定義了一個形參 y 接受傳過來的參數,只接受第一個

2.callee屬性 返回正在執行的函數對象

  返回正在執行的function對象,也就是所指定的 Function 對象的本文。

function calleeDemo() {  alert(arguments.callee);}
callee能夠列印函數其本身
 

  callee 屬性是 arguments 對象的一個成員,他表示對函數對象本身的引用,這有利於匿名函數的遞迴或確保函數的封裝性,該屬性只在函數正在執行時可用

注意:callee擁有length屬性,arguments.length是實參度, arguments.callee.length是形參長度,由此能夠判斷調用時形參長度是否和實參長度一致。

遞迴計算:遞迴計算1到n的自然數之 和?  

var sum = function(n){  if (n <= 0) return 1;  else return n +arguments.callee(n - 1)}比較一般的遞迴函式:var sum = function(n){  if (1==n) return 1;  else return n + sum (n-1);}調用時:sum(100);

其中函數內部包含了對sum自身的引用,函數名僅僅是個變數名,在函數內部調用sum即相當於調用一個全域變數,不能很好的體現出是調用自身,這時使用callee會是 個比較好的方法。

 

JS之arguments屬性解讀函數傳參?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.