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

Как вернуть значения в javascript

У меня есть функция javascript:

function myFunction(value1,value2,value3)
{
     //Do stuff and 

     value2=somevalue2 //to return
     value3=somevalue3 //to return
}

вызов функции в коде: ....

myFunction("1",value2,value3);

if(value2 && value3)
{
//Do some stuff
}

в этом сценарии, как передать value2 и value3 вызываемому методу или как вернуть значения в Java script.

4b9b3361

Ответ 1

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

Затем вы можете передать массив, объектный литерал или настраиваемый объект в метод для распространения значений.

Пример объекта:

function myFunction(value1,value2,value3)
{
     var returnedObject = {};
     returnedObject["value1"] = value1;
     returnedObject["value2"] = value2;
     return returnedObject;
}

var returnValue = myFunction("1",value2,value3);

if(returnValue.value1  && returnValue.value2)
{
//Do some stuff
}

Пример массива:

function myFunction(value1,value2,value3)
{
     var returnedArray = [];
     returnedArray.push(value1);
     returnedArray.push(value2);
     return returnedArray;
}

var returnValue = myFunction("1",value2,value3);

if(returnValue[0]  && returnValue[1])
{
//Do some stuff
}

Пользовательский объект:

function myFunction(value1,value2,value3)
{
     var valueHolder = new ValueHolder(value1, value2);
     return valueHolder;
}

var returnValue = myFunction("1",value2,value3);

// hypothetical method that you could build to create an easier to read conditional 
// (might not apply to your situation)
if(returnValue.valid())
{
//Do some stuff
}

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

Ответ 2

Javascript - это утка, напечатанная, поэтому вы можете создать небольшую структуру.

function myFunction(value1,value2,value3)
{         
     var myObject = new Object();
     myObject.value2 = somevalue2;
     myObject.value3 = somevalue3;
     return myObject;
}


var value = myFunction("1",value2,value3);

if(value.value2  && value.value3)
{
//Do some stuff
}

Ответ 3

function myFunction(value1,value2,value3)
{         
     return {val2: value2, val3: value3};
}

Ответ 4

Трудно сказать, что вы на самом деле пытаетесь сделать, и если это то, что вам действительно нужно, но вы также можете использовать обратный вызов:

function myFunction(value1,callback)
{
     //Do stuff and 

     if(typeof callback == 'function'){
        callback(somevalue2,somevalue3);
    }
}


myFunction("1", function(value2, value3){
    if(value2 && value3)
    {
    //Do some stuff
    }
});

Ответ 5

Я бы предпочел решение обратного вызова: Рабочая скрипка здесь: http://jsfiddle.net/canCu/

function myFunction(value1,value2,value3, callback) {

    value2 = 'somevalue2'; //to return
    value3 = 'somevalue3'; //to return

    callback( value2, value3 );

}

var value1 = 1;
var value2 = 2;
var value3 = 3;

myFunction(value1,value2,value3, function(value2, value3){
    if (value2 && value3) {
        //Do some stuff
        alert( value2 + '-' + value3 );
    }    
});

Ответ 6

return statement останавливает выполнение функции и returns a value из этой функции.

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

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

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

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

Ответ 7

Ответы очень хорошо освещены. Я просто хотел указать, что механизм out parameters, как описано в вопросе, не очень javascriptish. Хотя другие языки поддерживают его, javascript предпочитает вам просто возвращать значения из функций.

С ES6/ES2015 они добавили destructuring, что делает решение этой проблемы более элегантным при возврате массива. Деструктурирование вытащит части из массива/объекта:

function myFunction(value1)
{
    //Do stuff and 
    return [somevalue2, sumevalue3]
}

var [value2, value3] = myFunction("1");

if(value2  && value3)
{
    //Do some stuff
}

Ответ 8

Это очень просто. Вызовите одну функцию внутри другой функции с параметрами.

    function fun1()
    {
     var a=10;
     var b=20;
     fun2(a,b); //calling function fun2() and passing 2 parameters
    }

   function fun2(num1,num2)
   {
    var sum;
    sum = num1+num2;
    return sum;
   }

   fun1(); //trigger function fun1