我想做以下事情:
if (htmlEdit) {
var dialogDiv = $('#commonDialog');
} else {
var dialogDiv = $('#commonDialog2');
}
但是,如果我这样做,我认为dialogDiv将不会在if-else之外。如何声明它以便我可以在if-else之后在其他地方使用它?
答案 0 :(得分:3)
你可以这样做,
var dialogDiv;
if (htmlEdit) {
dialogDiv = $('#commonDialog');
} else {
dialogDiv = $('#commonDialog2');
}
这是一个很好的教程,
http://www.webdevelopersnotes.com/tutorials/javascript/global_local_variables_scope_javascript.php3
答案 1 :(得分:1)
您也可以这样做
function test()
{
var dialogDiv; // its use in only test function
}
If you want to declare globally than declare in script tag like this.
<script language="javascript">
var dialogDiv;
// Do your stuff below
function test()
{
if (htmlEdit) {
dialogDiv = $('#commonDialog');
} else {
dialogDiv = $('#commonDialog2');
}
}
</script>
答案 2 :(得分:1)
是的,您当然可以在if语句之外访问它。 Javascript具有函数范围,这意味着您只需跟进最近的funciton(){},并且可以访问内部的所有变量。 jsfiddle
if (true) {
var dialogDiv = 'hi';
} else {
var dialogDiv = 'bye';
}
alert(dialogDiv); //alerts "hi"
实际上,当你在函数中间的某处声明一个变量时,它会在你的作用域的最顶部被“声明”,并且值被设置在你认为你“声明”它的地方。这称为提升,它是在未经您同意或控制的情况下完成的,为什么在函数顶部声明所有变量是一个好主意,这样您就不会忘记您在该级别上的范围。
alert(dialogDiv); //Error because dialogDiv is not defined
(function(){
alert(dialogDiv); //alerts "undefined" because dialogDiv exists here but has no value yet
if (true) {
var dialogDiv = 'hi';
} else {
var dialogDiv = 'bye';
}
alert(dialogDiv); //alerts "hi"
})()
答案 3 :(得分:0)
创建dialogDiv全局变量,以便您可以访问项目中的任何位置。甚至在你的职能范围内外。