2 Stimmen

wie man eine Funktion dazu bringt, mehr als einen Wert zurückzugeben

Dies ist mein Code:

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

Ich bin mir ziemlich sicher, dass dies return Aussage ist nicht korrekt. Wie kann man eine Funktion dazu bringen, mehr als einen Wert zurückzugeben? Jede Hilfe wäre großartig.

6voto

Nick Husher Punkte 1899

In diesem Fall möchten Sie wahrscheinlich entweder ein Array oder ein Objektliteral zurückgeben:

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

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

2voto

helpermethod Punkte 54839

Wie wäre es damit:

return [this.name, this.value];

2voto

zzzzBov Punkte 166065

Sie könnten ein Objekt wörtlich weitergeben, wie Sie es gerade getan haben:

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

oder Sie können ein Array übergeben:

return [this.name, this.value];

Wenn Ihr Code im globalen Kontext ausgeführt wird, müssen Sie natürlich auch die namevalue über die window Gegenstand. Wenn Sie mit Evalcard als Konstruktor, werden Sie nicht brauchen eine Return-Anweisung, wird das erstellte Objekt automatisch gesetzt:

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

1voto

Robert Punkte 8628

Arbeitsbeispiel: 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);

1voto

Gabriel Ross Punkte 4986

Versuchen Sie es:

return [this.name, this.value];

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X