Reputation: 13908
This is my 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};
I'm pretty sure this return
statement is not correct. How do you make a function return more than one value? Any help at all would be great.
Upvotes: 2
Views: 4592
Reputation: 8767
Working example: 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);
Upvotes: 1
Reputation: 1594
Try this...
function xyz() {
...
var x = 1;
var y = 'A';
return [x, y];
}
var a = xyz();
document.write('x=' + a[0] + ' and y = ' + a[1]);
Upvotes: 1
Reputation: 1884
In this case, you probably want to return either an array or an object literal:
return { name: this.name, value: this.value };
// later: EvalCard(...).name; EvalCard(...).number;
return [ this.name, this.value ];
// later: EvalCard(...)[0]; EvalCard(...)[1];
Upvotes: 6
Reputation: 14634
You can return it in a number of different ways:
Array
return [this.name,this.value];
Object
return {first:this.name, second:this.value};
String
return this.name+":"+this.value;
Upvotes: 0
Reputation: 9616
I would return an object:
return {key1:value1, key2:value2}
Then you can reference it like so:
myReturn.key1;
Upvotes: 0
Reputation: 179046
You could pass an object literal as you came so close to doing:
return { name:this.name, value:this.value };
or you could pass an array:
return [this.name, this.value];
Of course if your code is executed in the global context, you'll be setting name
and value
on the window
object. If you're using Evalcard
as a constructor, you wont need a return statement, the object being created will automatically be set:
var e = new Evalcard(1);
console.log(e.name); //outputs "Ace" if you remove the return statement.
Upvotes: 2
Reputation: 9491
You need to change it to return an array or give keys to the object you are returning
So
return [this.name,this.value];
Or
return {name:this.name,value:this.value};
Upvotes: 0