Reputation: 3829
I am newbie to the JavaScript world. I have a doubt how the return statement works in JavaScript.
What I am trying to do is to have a function pass one arguments param
and looking whether the param
match the key of the exampleData
object. If match found I want to return the value and break the looping of each function also break the function I don't want to execute any other statement under the each function. If no match found the function must return null. But currently the function always return null value.
function exampleFunction(param){
$.each(exampleData, function (key, value) {
if(key == param){
return value;
}
});
return null;
}
Any insight into this would highly be appreciated. Thank you.
Upvotes: 3
Views: 14185
Reputation: 3615
Try this:
function exampleFunction(param){
return exampleData[param];
}
EDIT: If you want to return null if the parameter is undefined, then take a look at Paul and Crazy Train's comments:
return (typeof exampleData[param] === 'undefined')? null: exampleData[param];
OR
return (param in exampleData) ? exampleData[param] : null;
Upvotes: 0
Reputation:
There are a few issues with your approach:
return
ing to $.each
, not to the outer function, so you never get that value.:
function exampleFunction(param) {
return exampleData[param];
}
If exampleData[param]
is undefined
, it will return undefined
, otherwise, it will return the value stored there.
If you absolutely need the undefined case to return null
instead of undefined
, then it becomes a bit more complicated.
function exampleFunction(param) {
if(exampleData.hasOwnProperty(param) {
return exampleData[param];
} else {
return null;
}
}
Upvotes: 0
Reputation: 41665
Your example doesn't seem to need a loop. That and returning from the loop-delegate doesn't do anything for you.
You can test if a key appears in an object using the in
operator.
function exampleFunction(param){
return param in exampleData ? exampleData[param] : null;
}
Upvotes: 8
Reputation: 107508
Given Crazy Train's comment, you need to capture the matching value so you can return it later:
function exampleFunction(param) {
var match = null;
$.each(exampleData, function (key, value) {
if (key == param) {
match = value;
return false; // to end the $.each early
}
});
return match;
}
Upvotes: 4