當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JS入门之arguments对象
生活随笔
收集整理的這篇文章主要介紹了
JS入门之arguments对象
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
??
每天一對象,JS天天見,今天我們來看看arguments對象及屬性。arguments對象不能顯式創建,arguments對象只有函數開始時才可用。函數的?arguments?對象并不是一個數組,訪問單個參數的方式與訪問數組元素的方式相同。索引?n?實際上是?arguments?對象的?0…n?屬性的其中一個參數。
??下面的示例演示了?arguments?對象的用法,arguments對象和Function是分不開的。
?1function?ArgTest(a,?b){
?2???var?i,?s?=?"The?ArgTest?function?expected?";
?3???var?numargs?=?arguments.length;?????//?獲取被傳遞參數的數值。
?4???var?expargs?=?ArgTest.length;???????//?獲取期望參數的數值。
?5???if?(expargs?<?2)
?6??????s?+=?expargs?+?"?argument.?";
?7???else
?8??????s?+=?expargs?+?"?arguments.?";
?9???if?(numargs?<?2)
10??????s?+=?numargs?+?"?was?passed.";
11???else
12??????s?+=?numargs?+?"?were?passed.";
13???s?+=?"\n\n"
14???for?(i?=0?;?i?<?numargs;?i++){??????//?獲取參數內容。
15???s?+=?"??Arg?"?+?i?+?"?=?"?+?arguments[i]?+?"\n";
16???}
17???return(s);??????????????????????????//?返回參數列表。
18}
?? 以上是arguments對象,由于和Function對象緊密地聯系在一起。也就是說每一個函數都有自己的argument屬性。下面我們來看看argument屬性:為當前執行的function?對象返回一個arguments?對象,function 參數是當前執行函數的名稱,可以省略。
?? 通過?arguments?屬性(相對于Function來說),函數可以處理可變數量的參數。arguments?對象的?length?屬性包含了傳遞給函數的參數的數目。對于arguments?對象所包含的單個參數,其訪問方法與數組中所包含的參數的訪問方法相同。請看下面的例子:
?1function?ArgTest(){
?2???var?i,?s,?numargs?=?arguments.length;
?3???s?=?numargs;??
?4???if?(numargs?<?2)
?5??????s?+=?"?argument?was?passed?to?ArgTest.?It?was?";
?6???else
?7??????s?+=?"?arguments?were?passed?to?ArgTest.?They?were?"?;
?8???for?(i?=?0;?i?<?numargs;?i++)
?9??????{
10?????????s?+=?arguments[i]?+?"?";
11??????}
12???return(s);
13}
?? 我們知道每一個對象都有自己的屬性,arguments對象也不例外,首先arguments的訪問猶如Array對象一樣,用0到arguments.length-1來枚舉每一個元素。下面我們來看看callee屬性,返回正被執行的? Function?對象,也就是所指定的? Function?對象的正文。 callee?屬性是? arguments?對象的一個成員,僅當相關函數正在執行時才可用。 callee?屬性的初始值就是正被執行的? Function?對象,這允許匿名的 遞歸函數。
1function?factorial(n){
2??if?(n?<=?0)
3??return?1;
4??else
5????return?n?*?arguments.callee(n?-?1)
6}
7print(factorial(3));
8 ??
? 到這里基本上把arguments對象給講完了,不知還有其他的東西嗎?其實很多東西我們都已經很熟悉了,除了上述的callee屬性外,其他的我們都時不時在應用他們。OK,今天的對象學習就到這里了,明天要看的對象將是Boolean對象。
??下面的示例演示了?arguments?對象的用法,arguments對象和Function是分不開的。
?1function?ArgTest(a,?b){
?2???var?i,?s?=?"The?ArgTest?function?expected?";
?3???var?numargs?=?arguments.length;?????//?獲取被傳遞參數的數值。
?4???var?expargs?=?ArgTest.length;???????//?獲取期望參數的數值。
?5???if?(expargs?<?2)
?6??????s?+=?expargs?+?"?argument.?";
?7???else
?8??????s?+=?expargs?+?"?arguments.?";
?9???if?(numargs?<?2)
10??????s?+=?numargs?+?"?was?passed.";
11???else
12??????s?+=?numargs?+?"?were?passed.";
13???s?+=?"\n\n"
14???for?(i?=0?;?i?<?numargs;?i++){??????//?獲取參數內容。
15???s?+=?"??Arg?"?+?i?+?"?=?"?+?arguments[i]?+?"\n";
16???}
17???return(s);??????????????????????????//?返回參數列表。
18}
?? 以上是arguments對象,由于和Function對象緊密地聯系在一起。也就是說每一個函數都有自己的argument屬性。下面我們來看看argument屬性:為當前執行的function?對象返回一個arguments?對象,function 參數是當前執行函數的名稱,可以省略。
?? 通過?arguments?屬性(相對于Function來說),函數可以處理可變數量的參數。arguments?對象的?length?屬性包含了傳遞給函數的參數的數目。對于arguments?對象所包含的單個參數,其訪問方法與數組中所包含的參數的訪問方法相同。請看下面的例子:
?1function?ArgTest(){
?2???var?i,?s,?numargs?=?arguments.length;
?3???s?=?numargs;??
?4???if?(numargs?<?2)
?5??????s?+=?"?argument?was?passed?to?ArgTest.?It?was?";
?6???else
?7??????s?+=?"?arguments?were?passed?to?ArgTest.?They?were?"?;
?8???for?(i?=?0;?i?<?numargs;?i++)
?9??????{
10?????????s?+=?arguments[i]?+?"?";
11??????}
12???return(s);
13}
?? 我們知道每一個對象都有自己的屬性,arguments對象也不例外,首先arguments的訪問猶如Array對象一樣,用0到arguments.length-1來枚舉每一個元素。下面我們來看看callee屬性,返回正被執行的? Function?對象,也就是所指定的? Function?對象的正文。 callee?屬性是? arguments?對象的一個成員,僅當相關函數正在執行時才可用。 callee?屬性的初始值就是正被執行的? Function?對象,這允許匿名的 遞歸函數。
1function?factorial(n){
2??if?(n?<=?0)
3??return?1;
4??else
5????return?n?*?arguments.callee(n?-?1)
6}
7print(factorial(3));
8 ??
? 到這里基本上把arguments對象給講完了,不知還有其他的東西嗎?其實很多東西我們都已經很熟悉了,除了上述的callee屬性外,其他的我們都時不時在應用他們。OK,今天的對象學習就到這里了,明天要看的對象將是Boolean對象。
總結
以上是生活随笔為你收集整理的JS入门之arguments对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js中对函数设置默认参数值的3种方法
- 下一篇: js变量前有 var 与没有的区别