请考虑以下代码:
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风格指南视为坏风格?如果是这样,建议的替代方案是什么?
需要明确的是:我知道提升以及变量不是块范围而是功能范围的事实.
从技术上讲,变量是"悬挂的",代码将执行如下:
var para1 = 'some value';
var para2;
if(someCondition)
para2 = 'some other value';
Run Code Online (Sandbox Code Playgroud)
var范围内的所有声明在执行代码之前声明此范围内的变量.因此,它在实践中没有太大的区别.但是,我认为如上所述明确编写代码是很好的方式,以明确范围内存在哪些变量.在条件内"隐藏"变量声明可能会导致混淆.
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |