在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!*/
如果只执行一个条件,为什么这是一个坏习惯,这意味着变量只会被声明一次。它的真正问题是什么?
答案 0 :(得分:7)
你说错了,但是正如ECMAscript中规定的那样,它会被提升到最近的函数定义的顶部。
这可能会导致在拥有大量代码库时出现问题并且“难以”找到。
答案 1 :(得分:0)
var
目标是声明全局变量,即使你在其他上下文中声明它,如函数,if / else语句,你可以在任何地方访问变量......
然而,在大多数编程语言中,如果在块内声明变量(for,if,function ...),则该变量仅存在于此块中。
在大多数情况下替换let
的下一代javascript var
。 let
将具有先前描述的行为。
另一个问题是,如果你的脚本运行错误,很难找到第一次声明变量的位置。