在if中声明变量并在外部使用

Dan*_*rth 4 javascript

请考虑以下代码:

var factory = function(someCondition) {
    var para1 = 'some value';
    if(someCondition)
        var para2 = 'some other value';

    return new MyClass(para1, para2);
}
Run Code Online (Sandbox Code Playgroud)

我知道这个代码是完全合法的,即使para2在内部声明if但在外部使用.

我的问题是:这是否 - 虽然合法 - 被主要的Javascript风格指南视为坏风格?如果是这样,建议的替代方案是什么?

需要明确的是:我知道提升以及变量不是块范围而是功能范围的事实.

dec*_*eze 5

从技术上讲,变量是"悬挂的",代码将执行如下:

var para1 = 'some value';
var para2;
if(someCondition)
    para2 = 'some other value';
Run Code Online (Sandbox Code Playgroud)

var范围内的所有声明在执行代码之前声明此范围内的变量.因此,它在实践中没有太大的区别.但是,我认为如上所述明确编写代码是很好的方式,以明确范围内存在哪些变量.在条件内"隐藏"变量声明可能会导致混淆.