Are variables declared and assigned in an “if” statement visible only within that “if” block or within the whole function?
Am I doing this right in the following code? (seems to work, but declaring “var structure” multiple times seems awkward) any cleaner solutions?
function actionPane(state) {
if(state === "ed") {
var structure = {
"element" : "div",
"attr" : {
"class" : "actionPane"
},
"contains" : [{
"element" : "a",
"attr" : {
"title" : "edit",
"href" : "#",
"class" : "edit"
},
"contains" : ""
}, {
"element" : "a",
"attr" : {
"title" : "delete",
"href" : "#",
"class" : "delete"
},
"contains" : ""
}]
}
} else {
var structure = {
"element" : "div",
"attr" : {
"class" : "actionPane"
},
"contains" : [{
"element" : "a",
"attr" : {
"title" : "save",
"href" : "#",
"class" : "save"
},
"contains" : ""
}, {
"element" : "a",
"attr" : {
"title" : "cancel",
"href" : "#",
"class" : "cancel"
},
"contains" : ""
}]
}
}
return structure;
}
1) Variables are visible for the whole function scope. Therefore, you should only declare them once.
2) You should not declare the variable twice in your example. I’d recommend declaring the variable at the top of the function, then just setting the value later:
For excellent feedback on JavaScript, I highly recommend using JSLint by Douglas Crockford. It will scan your code for common errors, and find suggestions for cleanup.
I also recommend reading the small book JavaScript: The Good Parts. It contains a lot of tips for writing maintainable JS code.