標籤: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屬性解讀函數傳參?