在if条件中声明变量两次可能会出现什么问题?

时间:2017-08-18 08:10:52

标签: javascript

在if条件中声明变量两次可能会出现什么问题?

我知道这不是最佳方式!
我知道我可以在if条件之外声明变量。

我没有找到解决方案!我不知道如何声明我的变量。我想理解为什么在if条件块中声明变量是一种不好的方法。

/* Yes I know I can just have condition instead of condition === true, 
   this is only for simplicity */
if(condition === true){ 
    var StuckUps = "over 9000";
}else if(condition === false){
    var StuckUps = "Nothing";
}

alert(StuckUps) /* Yes I can access it outside the if condition!*/

如果只执行一个条件,为什么这是一个坏习惯,这意味着变量只会被声明一次。它的真正问题是什么?

2 个答案:

答案 0 :(得分:7)

你说错了,但是正如ECMAscript中规定的那样,它会被提升到最近的函数定义的顶部。

这可能会导致在拥有大量代码库时出现问题并且“难以”找到。

答案 1 :(得分:0)

var目标是声明全局变量,即使你在其他上下文中声明它,如函数,if / else语句,你可以在任何地方访问变量......

然而,在大多数编程语言中,如果在块内声明变量(for,if,function ...),则该变量仅存在于此块中。

在大多数情况下替换let的下一代javascript varlet将具有先前描述的行为。

另一个问题是,如果你的脚本运行错误,很难找到第一次声明变量的位置。