2010-02-18 86 views
1
function f1(i1, i2) { 
    log(i1); 
    log(i2); 
} 

function f2(i1,i2){ 
    f1(arguments); 
} 

f2(100,200); 

在上述函數f1的情況下,i1獲取[100,200],而i2未定義。JavaScript如何傳遞參數

從f2向f1傳遞參數的正確方法是什麼?

+0

我正在學習JavaScript,所以答案必須是使用參數,而不是直接傳遞值。 – 2010-02-18 16:59:38

回答

7

功能對象具有一個apply()方法:

f1.apply(null, arguments) 

傳遞的第一個參數是,應該在所調用的函數this上述目的,第二個參數是包含用於被調用的函數的參數值的數組。

+0

+1好的工作,你打敗了我:) – 2010-02-18 16:57:50

+0

好的東西學習。肯定是這個+1。 – Kangkan 2010-03-02 10:05:48

+0

我一直在使用JavaScript很長一段時間,只聽說過這個。爲什麼!!!?? +1 – 2011-03-23 21:24:14

-1

爲什麼不只是做:

function f2(i1,i2){ f1(i1,i2); } 

0

對於這種精確的情況:

function f2(i1,i2){ f1(i1, i2); } 

對於任何數量的參數,見某事的答案

0

如果必須使用arguments對象:

function f2(i1, i2) { 
    f1(arguments[0], arguments[1]); 
} 

我真的想知道爲什麼你不直接通過i1和i2,但我會給你懷疑的好處,並假設爲目的o f這個代碼比你真實的代碼簡單得多。

+0

使用'arguments'的全部目的是讓參數的個數可以變化。 – 2010-02-18 16:57:13

0

我不明白你的問題,如果你這樣做,將工作:

<script> 
function f1(i1, i2) { alert(i1+","+i2); log(i1); log(i2); } 

function f2(i1,i2){ f1(i1,i2); } 

f2(100,200); 

</script> 
0

F1不是return荷蘭國際集團任何結果。即使這樣做,你也需要返回一個數組來返回多個值。

function f1(i1, i2) { 
    var returnArray = new Array(); 
    var returnArray[0] = log(i1); 
    var returnArray[1] = log(i2); 
    return returnArray; 
} 

function f2(i1,i2) { 
    var results = f1(i1, i2); 
} 

f2(100,200);