2016-10-20 14 views
-5

игрового я не в состоянии достичь желаемого результата для этой замены функции ниже, где я хочу значения распечатываются в 3,2свопа функция() для значений переменных

function swap(x,y){ 
var t = x; 
x = y; 
y = t; 
} 

console.log(swap(2,3)); 

Любой ключ будет оценен по достоинству!

+0

Он меняет ваши переменные, но это о нем, оно не возвращает nything, а переменные являются локальными для функции? – adeneo

+2

нет 'return [x, y];' – Redu

+0

Почему бы просто не поменять местами переменные без использования функции? – evolutionxbox

ответ

3

Ваша функция обменивает значения внутри, но функция не возвращает значение.

Следующий метод возвращает массив значений в обратном порядке того, что было поставлено.

function swap(x, y) { 
 
    var t = x; 
 
    x = y; 
 
    y = t; 
 
    return [x, y]; 
 
} 
 

 
console.log(swap(2, 3));

Однако, вы можете легко сделать что-то вроде следующего фрагмента кода, потому что - на основе вашего поставляемого кода - там, кажется, нет никакой необходимости фактически поменять значение аргументов.

function swap(x, y) { 
 
    return [y, x]; 
 
} 
 

 
console.log(swap(2, 3));

+0

Ум объясняет, почему это работает? – Li357

+0

Первый фрагмент или второй фрагмент? @AndrewLi –

1

Если вы на самом деле не нужны значения для замены:

function swap (x, y) 
{ 
    return [y, x]; 
} 

Если вам нужны значения для замены, но вы не хотите, чтобы объявить другой переменная:

function swap (x, y) 
{ 
    x = x + y; 
    y = x - y; 
    x = x - y; 
    return [x, y]; 
}