Подтвердить что ты не робот

Вернуть две переменные в одну функцию

Рассмотрим следующий код (demo):

function test(){
   var h = 'Hello';
   var w = 'World';
   return (h, w);

}

var test = test();

alert(test);

При выполнении функция test возвращает только второе значение (т.е. 'World'). Как мне вернуть несколько значений?

4b9b3361

Ответ 1

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

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

function test(){
  var h = 'Hello';
  var w = 'World';
  var hw = h+w 
  return (hw);
}
var test = test();
alert(test);

Это будет предупреждать "HelloWorld". (Если вам нужно место там, вы должны использовать var hw = h+" "+w вместо этого.

Если вам нужно разделить две переменные, вы можете поместить их в массив следующим образом:

function test(){
  var h = "Hello";
  var w = "World";
  var hw=[h,w];
  return hw;
}
var test = test();
alert(test);

Это позволяет сохранять значения h и w индивидуально как test[0] и test[1] соответственно. Тем не менее, alert (test) здесь отобразит "Hello, World" из-за того, как alert() обрабатывает массивы (т.е. Последовательно печатает список каждого элемента в массиве). Если вы хотите получить тот же результат, что и ваш пример кода, вам нужно использовать что-то вроде join(). join() будет строить строку из массива, она принимает один аргумент, который служит разделителем между элементами. Чтобы воспроизвести два предупреждения из моего первого примера, вам нужно будет использовать alert(test.join("")) и alert(test.join(" "), соответственно.

Мой пример можно немного сократить, пропустив создание переменной hw и просто вернув массив напрямую. В этом случае test() будет выглядеть так:

function test(){
  var h="Hello";
  var w="World";
  return [h, w];
}

Это также можно сделать как объект с return { h : h, w : w };, и в этом случае вы будете обращаться к отдельным переменным как test.h и test.w, соответственно.

Ответ 2

function test(){ 
var h = 'Hello'; 
var w = 'World'; 
return {h:h,w:w}

}

var test = test();

alert(test.h);
alert(test.w);

Попробуйте это

Ответ 3

Оператор запятой оценивает каждый операнд и затем возвращает значение последнего.

Вам нужно либо вернуть массив:

return [h, w];

... или объект:

return { h : h, w : w };

который вы затем использовали бы как:

var test = test();
alert(test[0]); // "hello" - in the case of the array version

... или:

var test = test();
alert(test.w); // "world" in the case of the object version

Ответ 4

Вы можете вернуть массив или новый объект.