2010-02-18 2 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, как передать аргументы

Каков правильный способ передачи аргументов f1 из f2.

+0

Я изучаю JavaScript, поэтому ответ должен использовать аргументы, а не передавать значения напрямую. –

ответ

7

Функциональные объекты имеют apply() метод:

f1.apply(null, arguments) 

Первый параметр передается это объект, который должен быть this в вызываемой функции, второй параметр представляет собой массив, содержащий значения параметров для вызываемой функции.

+0

+1 Хорошая работа, вы избили меня до этого :) –

+0

Хорошая вещь учиться. Определенно +1 для этого. – Kangkan

+0

Я уже давно использую JavaScript и только что слышал об этом. Зачем!!!?? +1 –

-1

Почему бы не просто сделать:

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

?

0

Для этой конкретной ситуации:

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

Для любого числа аргументов, см ответ STH в

0

Если вы должны использовать arguments объект:

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

Я действительно интересно, почему вы не просто передаете i1 и i2 напрямую, но я дам вам пользу от сомнений и предполагаю для целей o f вопрос о том, что этот код значительно проще, чем ваш реальный код.

+0

Вся цель использования 'arguments' заключается в том, что число параметров может быть переменной. –

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); 
Смежные вопросы