如何在javascript中返回值
我有一个javascript函数:如何在javascript中返回值,javascript,Javascript,我有一个javascript函数: function myFunction(value1,value2,value3) { //Do stuff and value2=somevalue2 //to return value3=somevalue3 //to return } 函数调用代码: 在这个场景中,如何将value2和value3传递给被调用的方法,或者如何在Java脚本中返回值。Javascript是duck类型的,因此您可以创建一个小结构 fun
function myFunction(value1,value2,value3)
{
//Do stuff and
value2=somevalue2 //to return
value3=somevalue3 //to return
}
函数调用代码:
在这个场景中,如何将value2和value3传递给被调用的方法,或者如何在Java脚本中返回值。Javascript是duck类型的,因此您可以创建一个小结构
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
}
您可以返回一个数组、一个对象文本或一个您创建的封装返回值的类型的对象 然后,可以将数组、对象文字或自定义对象传递到方法中以传播值 对象示例:
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
}
数组示例:
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
}
自定义对象:
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
}
我会避免使用数组方法,因为您必须通过索引而不是命名对象属性来访问值。很难判断您实际要做什么,以及这是否是您真正需要的,但您也可以使用回调:
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
}
});
我更喜欢回调解决方案: 在这里演奏小提琴:
return语句
停止函数的执行,并从该函数返回值
虽然更新全局变量是将信息传递回调用函数的代码的一种方法,但这不是一种理想的方法。更好的替代方法是编写函数,以便将函数使用的值作为参数传递给它,并且函数返回它需要的任何值,而无需使用或更新任何全局变量
通过限制向函数传递信息和从函数传递信息的方式,我们可以更容易地从代码中的多个位置重用同一个函数
JavaScript提供在需要运行的函数中的所有内容都完成运行后,将一个值传递回调用它的代码
JavaScript使用返回语句
将函数中的值传递回调用它的代码。要返回的值在return
关键字中指定。答案很好地涵盖了内容。我只是想指出,输出参数的机制,如问题中所描述的,并不是很javascriptish。虽然其他语言支持它,但javascript更希望您只从函数返回值
在ES6/ES2015中,他们添加了一项新功能,使该问题的解决方案在返回阵列时更加优雅。分解结构将从数组/对象中提取部分:
function myFunction(value1)
{
//Do stuff and
return [somevalue2, sumevalue3]
}
var [value2, value3] = myFunction("1");
if(value2 && value3)
{
//Do some stuff
}
这很简单。使用参数在另一个函数中调用一个函数
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
除了不能将成员添加到未初始化的变量。该变量不起作用且不执行任何操作。它在我有myObject.Value2,myObject.Value3的那条线上断开了。有什么建议吗?为什么要回电话?除非需要异步性,否则这似乎是一个特别复杂的解决方案。