javascript arguments物件的用法:1、取得實參和形參的個數;2、修改實參值;3、改變實參的個數;4、偵測使用者傳遞的參數是否符合要求;5、函數的參數個數不確定時,用於存取呼叫函數的實參值;6、遍歷或存取實參的值。
本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
arguments 物件表示函數的實參集合,僅能夠在函數體內可見,並且可以直接存取。
arguments 物件的 length 屬性和 callee 屬性最為常用:
使用 length 屬性可以取得函數的實參數。 arguments 物件只能在函數體內可見,因此 arguments.length 也只能在函數體內使用。
使用 callee 屬性可以引用目前 arguments 物件所在的函數。使用 callee 屬性可以在函數體內呼叫函數本身。在匿名函數中,callee 屬性比較有用。例如,利用它可以設計遞歸呼叫。
範例1:取得實參與形參的數量
使用 arguments.length 屬性可以取得函數的實參數。使用函數物件的 length 屬性可以取得函數的形參數,此屬性為唯讀屬性,在函數體內、體外都可以使用。
下面範例設計一個 checkArg() 函數,用來偵測一個函數的形參和實參是否一致,如果不一致則拋出例外。
function checkArg(a) { //检测函数实参与形参是否一致 if (a.length != a.callee.length) //如果实参与形参个数不同,则抛出错误 throw new Error("实参和形参不一致"); } function f(a, b) { //求两个数的平均值 checkArg(arguments); //根据arguments来检测函数实参和形参是否一致 return ((a * 1 ? a : 0) + (b * 1 ? b : 0)) / 2; //返回平均值 } console.log(f(6)); //抛出异常。调用函数f,传入一个参数
範例2:在函數內部修改實參的值
#在下面範例中使用for 迴圈遍歷arguments 對象,然後把循環變數的值傳入arguments ,以便於改變實參值。
function f() { for (var i = 0; i < arguments.length; i++) { //遍历arguments对象 arguments[i] = i; //修改每个实参的值 console.log(arguments[i]); //提示修改的实参值 } } f(3, 3, 6); //返回提示0、1、2,而不是3、3、6
範例3:改變函數實參的個數
#透過修改 length 屬性值,也可以改變函數的實參數。當 length 屬性值增加時,則增加的實參值為 undefined;如果 length 屬性值減小,則會丟棄 length 長度值之後的實參值。
function f() { arguments.length = 2; //修改arguments属性对象的length属性值 for (var i = 0; i < arguments.length; i ++) { console.log(arguments[i]); } } f(3, 3, 6); //返回提示3、3
範例4:偵測使用者傳遞的參數是否符合要求
#在下面範例中,使用arguments.callee 取得匿名函數,然後透過函數的length 屬性取得函數形參個數,最後比較實參個數與形參個數,以偵測使用者傳遞的參數是否符合要求。
function f(x,y,z) { var a = arguments.length(); //获取函数实参的个数 var b = arguments.callee.length; //获取函数形参的个数 if (a != b_ { //如果实参和形参个数不相等,则提示错误信息 throw new Error("传递的参数不匹配"); }else { //如果实参和形参个数相同,则返回它们的和 return x + y + z; } } console.log(f(3,4,5)); //返回值12
arguments.callee 等價於函數名,在上面範例中,arguments.callee 等於 f。
arguments 物件的應用
在實際開發中,arguments 物件非常有用。靈活使用 arguments 對象,可以提升使用函數的靈活性,增強函數在抽象程式設計中的適應能力和糾錯能力。以下結合幾個典型範例展示 arguments 的應用。
1) 使用 arguments 物件能夠增強函數應用的彈性。例如,如果函數的參數個數不確定,或者函數的參數個數很多,而又不想逐一定義每一個形參,則可以省略定義參數,直接在函數體內使用arguments 物件來存取呼叫函數的實參值。
範例1
下面範例定義一個求平均值的函數,該函數藉助 arguments 物件來計算參數的平均值。在呼叫函數時,可以傳入任意多個參數。
function avg() { //求平均值 var num = 0, 1 = 0; //声明并初始化临时变量 for (var i = 0; i < arguments.length; i ++) { //遍历所有实参 if (typeof arguments[i] != "number") //如果参数不是数值 continue; //则忽略该参数值 num += arguments[i]; //计算参数的数值之和 1 ++; //计算参与和运算的参数个数 } num /= 1; //求平均值 return num; //返回平均值 } console.log(avg(1,2,3,4)); //返回2.5 console.log(avg(1,2,"3",4)); //返回2.3333333333333335
範例2
在頁面設計中經常需要驗證表單輸入值,以下範例偵測文字方塊輸入的值是否為合法的郵件地址。
function isEmail() { if (arguments.length > 1) throw new Error("只能够传递一个参数"); //检测参数个数 var regexp = /^\w+((-\w+) | (\.\w+)) *\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)8\.[A-Za-z0-9]+$/; //定义正则表达式 if (arguments[0].search(regexp) != -1) //匹配实参的值 return true; //如果匹配则返回true else return false; //如果不匹配则返回false } var email = "1798017447@qq.com"; //声明并初始化邮箱地址字符串 console.log(isEmail(email)); //返回true
2) arguments 物件是偽類別數組,不是數組,可以透過 length 屬性和中括號語法來遍歷或存取實參的值。不過,透過動態呼叫的方法,也可以使用陣列的方法,如 push、pop、slice 等。
範例3
使用 arguments 可以模擬重載。實作方法:透過 arguments.length 屬性值判斷實際參數的個數和型別,決定執行不同的程式碼。
function sayHello() { switch(arguments.length) { case 0 : return "Hello"; case 1 : return "Hello, " + arguments[0]; case 2 : return (arguments[1] == "cn" ? "你好, " : "Hello, ") + arguments[0]; }; } console.log(sayHello()); //"Hello" console.log(sayHello("Alex")); //"Hello,Alex" console.log(sayHello("Alex", "vn")); //"你好,Alex"
範例4
下面範例使用動態呼叫的方法,讓 arguments 物件呼叫陣列方法 slice(),可以把函數的參數物件轉換為陣列。
function f() { return [].slice.apply(arguments); } console.log(f(1,2,3,4,5,6)); //返回[1,2,3,4,5,6]
【推薦學習:javascript進階教學】
以上是javascript arguments物件怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

WebStorm Mac版
好用的JavaScript開發工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中