如何在javascript中返回值

IT技术 javascript
2021-02-02 19:32:14

我有一个 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 脚本中返回值。

6个回答

您可以返回数组、对象字面量或您创建的封装返回值的类型的对象。

然后,您可以将数组、对象字面量或自定义对象传递到方法中以传播这些值。

对象示例:

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
}

我会避免使用数组方法,因为您必须通过索引而不是命名对象属性来访问值。

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
}
除了您不能将成员添加到未初始化的变量之外。
2021-04-04 19:32:14
它不工作,什么也不做。它在我拥有 myObject.Value2、myObject.Value3 的那条线上打破了。有什么建议?
2021-04-08 19:32:14
function myFunction(value1,value2,value3)
{         
     return {val2: value2, val3: value3};
}

很难说出你真正想要做什么,以及这是否是你真正需要的,但你也可以使用回调:

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
    }
});

我更喜欢回调解决方案:在这里工作小提琴: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 );
    }    
});
为什么要回调?除非需要异步性,否则这似乎是一个特别复杂的解决方案。
2021-04-05 19:32:14