JavaScript的arguments對象應用樣本,javascript樣本

來源:互聯網
上載者:User

JavaScript的arguments對象應用樣本,javascript樣本

arguments 對象

在函數代碼中,使用特殊對象 arguments,開發人員無需明確指出參數名,就能訪問它們。

例如,在函數 sayHi() 中,第一個參數是 message。用 arguments[0] 也可以訪問這個值,即第一個參數的值(第一個參數位於位置 0,第二個參數位於位置 1,依此類推)。

因此,無需明確具名引數,就可以重寫函數:

function sayHi() {if (arguments[0] == "bye") {return;}alert(arguments[0]);}

檢測參數個數

還可以用 arguments 對象檢測函數的參數個數,引用屬性 arguments.length 即可。

下面的代碼將輸出每次調用函數使用的參數個數:

function howManyArgs() {alert(arguments.length);}howManyArgs("string", 45);howManyArgs();howManyArgs(12);

上面這段代碼將依次顯示 "2"、"0" 和 "1"。

注釋:與其他程式設計語言不同,ECMAScript 不會驗證傳遞給函數的參數個數是否等於函數定義的參數個數。開發人員定義的函數都可以接受任意個數的參數(根據 Netscape 的文檔,最多可接受 255 個),而不會引發任何錯誤。任何遺漏的參數都會以 undefined 傳遞給函數,多餘的函數將忽略。
類比函數重載

用 arguments 對象判斷傳遞給函數的參數個數,即可類比函數重載:

function doAdd() {if(arguments.length == 1) {alert(arguments[0] + 5);} else if(arguments.length == 2) {alert(arguments[0] + arguments[1]);}}

doAdd(10); //輸出 "15"
doAdd(40, 20); //輸出 "60"

當只有一個參數時,doAdd() 函數給參數加 5。如果有兩個參數,則會把兩個參數相加,返回它們的和。所以,doAdd(10) 輸出的是 "15",而 doAdd(40, 20) 輸出的是 "60"。

雖然不如重載那麼好,不過已足以避開 ECMAScript 的這種限制。


對於Javascript函數 內部對象 arguments 的問題

arguments是一個偽數組,for in遍曆對象,各個瀏覽器實現可能存在不一致,所以,如果你只是想取值的話,還是採用傳統的for好一些
 
javascript問題

arguments 屬性
為當前執行的 function 對象返回一個arguments 對象。

function.arguments

function 參數是當前執行函數的名稱,可以省略。

說明
通過 arguments 屬性,函數可以處理可變數量的參數。 arguments 對象的 length 屬性包含了傳遞給函數的參數的數目。對於arguments 對象所包含的單個參數,其存取方法與數組中所包含的參數的存取方法相同。

樣本
下面的例子說明了 arguments 屬性的用法:

function ArgTest(){
var i, s, numargs = arguments.length;
s = numargs;
if (numargs < 2)
s += " argument was passed to ArgTest. It was ";
else
s += " arguments were passed to ArgTest. They were " ;
for (i = 0; i < numargs; i++)
{
s += arguments[i] + " ";
}
return(s);
}

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

[function.]arguments[n]

參數
function

可選項。當前正在執行的 Function 對象的名字。

n

必選項。要傳遞給 Function 對象的從0開始的參數值索引。

說明
不能顯式建立 arguments 對象。arguments 對象只有函數開始時才可用。函數的 arguments 對象並不是一個數組,訪問單個參數的方式與訪問數組元素的方式相同。索引 n 實際上是 arguments 對象的 0…n 屬性的其中一個參數。

樣本
下面的樣本示範了 arguments 對象的用法。

function ArgTest(a, b){
var i, s = "The ArgTest function expected ";
var numargs = arguments.length; // 擷取被傳遞參數的數值。
var expargs = ArgTest.length; // 擷取期望參數的數值。
if (expargs < 2)
s += expargs + " argument. ";
else
s += expargs + " arguments. ";
if (numargs < 2)
s += numargs + " was passed.";
else
s += numargs + " were passed.";
s += "\n\n"
for (i =0 ; i < numargs; i++){ // 擷取參數內容。......餘下全文>>
 

聯繫我們

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