如何使函数返回多个值

时间:2011-08-10 17:46:35

标签: javascript

这是我的代码:

var Evalcard =  function(number) {
    if (number == 1) {
        this.name = "Ace";
        this.value = 11;
    }
    else if (number == 11) {
        this.name = "Jack";
        this.value = 10;
    }
    else if (number == 12) {
        this.name = "Queen";
        this.value = 10;
    }
    else if (number == 13) {
        this.name = "King";
        this.value = 10;
    }

    return {this.name,this.value};

我很确定这个return语句不正确。如何使函数返回多个值?任何帮助都会很棒。

9 个答案:

答案 0 :(得分:6)

在这种情况下,您可能希望返回数组或对象文字:

return { name: this.name, value: this.value };
// later: EvalCard(...).name; EvalCard(...).number;


return [ this.name, this.value ];
// later: EvalCard(...)[0]; EvalCard(...)[1];

答案 1 :(得分:2)

这个怎么样:

return [this.name, this.value];

答案 2 :(得分:2)

你可以传递一个对象文字,因为你接近这样做:

return { name:this.name, value:this.value };

或者您可以传递数组:

return [this.name, this.value];

当然,如果您的代码是在全局上下文中执行的,那么您将在name对象上设置valuewindow。如果您使用Evalcard作为构造函数,则不会需要一个return语句,正在创建的对象将自动设置:

var e = new Evalcard(1);
console.log(e.name); //outputs "Ace" if you remove the return statement.

答案 3 :(得分:1)

工作示例:http://jsfiddle.net/CxTWt/

var Evalcard = function(number) {
    var evalName, evalValue;    
    if (number == 1) {         
        evalName= "Ace";         
        evalValue = 11;     
    }else if (number == 11) {         
        evalName = "Jack";         
        evalValue = 10;     
    }else if (number == 12) {         
        evalName= "Queen";         
        evalValue= 10;     
    }else if (number == 13) {         
        evalName= "King";         
        evalValue = 10;     
    }      
    return {name: evalName, value: evalValue};
}

alert(Evalcard(1).name+" "+Evalcard(1).value);

答案 4 :(得分:1)

尝试:

return [this.name, this.value];

答案 5 :(得分:1)

试试这个......

function xyz() {
...
var x = 1;
var y = 'A';
return [x, y];
}
var a = xyz();
document.write('x=' + a[0] + ' and y = ' + a[1]); 

答案 6 :(得分:0)

您需要更改它以返回数组或为要返回的对象提供键

所以

return [this.name,this.value];

return {name:this.name,value:this.value};

答案 7 :(得分:0)

我会返回一个对象:

return {key1:value1, key2:value2}

然后你可以像这样引用它:

myReturn.key1;

答案 8 :(得分:0)

您可以通过多种不同的方式返回它:

阵列

return [this.name,this.value];

对象

return {first:this.name, second:this.value};

字符串

return this.name+":"+this.value;