2011-09-20 64 views
0

我想簡單地檢測到當前方法有哪些參數,所以我在鉻開發工具中調用參數,而我暫停執行該方法。但是參數返回[]空數組。但是,如果我嘗試在函數內部放置一些參數,所以這次參數和參數被填充。這個沒有任何問題嗎?調試JavaScript方法參數

例子:

function(){ 
    console.log(arguments);//value is [] 
} 

function(a,b,c){ 
    console.log(arguments);//value is not not empty array. It contains few parameters. 
} 

我不明白,這怎麼可能呢?

編輯:

現在我檢查它和它的作品,但讓我告訴你,當它不能正常工作。

我只是使用調試器,然後打開控制檯並寫入參數並輸入。結果是[]但如果我在函數中使用參數,我發現它被正確填充。那麼爲什麼在控制檯產品[]結果中引用參數呢?

+0

你怎麼稱呼這些功能?當你發佈他們時,你不會給他們打電話,也不會提及他們。 – pimvdb

+0

我們在這裏是否缺少一些代碼?參數定義在哪裏? –

+1

@ElRonnoco - 'arguments'是ecmascript的一部分。 –

回答

4

很抱歉,如果這不回答你的問題......這是一個很難理解您的實際問題是什麼...

如果你試圖找到多少個參數的函數預期,那麼你可以使用.length

f0 = function() { }; 
f1 = function (a) { }; 
f2 = function (a, b) { }; 

f0.length; // 0 
f1.length; // 1 
f2.length; // 2 

來源:http://es5.github.com/#x15.3.5.1


如果您嘗試查找函數收到多少個參數,則可以使用arguments.length。請注意,它與預期參數的數量無關。

f = function() { 
    return arguments.length; 
}; 

f();  // 0 
f(1); // 1 
f(1, 1); // 2 
+0

我指着第二 – AnyOne