如何在使用之前在javascript中定义变量?

时间:2012-03-03 06:36:25

标签: jquery

我想做以下事情:

if (htmlEdit) {
    var dialogDiv = $('#commonDialog');
} else {
    var dialogDiv = $('#commonDialog2');
} 

但是,如果我这样做,我认为dialogDiv将不会在if-else之外。如何声明它以便我可以在if-else之后在其他地方使用它?

4 个答案:

答案 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全局变量,以便您可以访问项目中的任何位置。甚至在你的职能范围内外。