我应该先声明 JavaScript 变量然后立即初始化吗?

7

我是JavaScript的新手,想知道在声明变量后立即初始化是否是最佳实践。例如:

var x = 5 ;
var y = 6 ;

改为:

var x , y ;

x = 5;
y = 6 ; 

这取决于您对这些变量的使用情况。 - Ostap Gonchar
5
在JavaScript中,这并不重要。只要在引用变量之前进行初始化即可,这样就可以了。 - 4Dev
1
"在声明后立即初始化是一种最佳实践。" 不,不是的。如果你知道变量的值,最好一次性声明和初始化它。 - dfsq
如果您知道要初始化的值,请在声明后立即执行以更加安全。 - Panther
只要确保您具有一些对JavaScript作用域和提升的基本理解- http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html - Vigneswaran Marimuthu
显示剩余2条评论
2个回答

4
你实际上如何声明变量是个人喜好问题。 如果你想连续声明多个变量,可以省略var关键字,而用逗号“继续”语句。
var x = 2,
    y = 3;
        

如果我在给另一个变量赋值时使用了一个变量,为了可读性,我喜欢将声明和赋值拆开。
var x = 2,
    y = x + 3;

vs

var x, y;
x = 2;
y = x + 3;

再次强调,这只是一种偏好,因为在JavaScript中任何变量只要声明后就可以使用。

  • 即使在同一个var语句中也是如此。

重要的是要记住,JavaScript中的变量具有函数作用域 - 不像其他语言常见的块级作用域。

(function(){
  var x = 1;
    
  for (var i = 0; i < 10; i++) { 
    var x = i;
  }
    
  (function(){
    var x = 999;
  }());

  alert(x); // 9!
}());

JavaScript大师道格拉斯·克罗克福德建议将变量定义放在每个函数的顶部,以使程序员习惯于具有适当块范围的语言更加明显。

更新:

在现代JavaScript中,不建议使用var。所有现代浏览器都支持letconst,它们具有真正的块范围,并且不会被提升到函数的顶部。


1
这样做不会影响执行,只是关于可读性的问题。
如果您更喜欢声明后再分配,请务必这样做。
如果您没有使用像var banana这样的局部变量,比如在类中,对执行有一定影响(但很少)。
例如: 这可能更容易阅读(但这是个人意见),并且需要较少的操作。
var Foo = Class.reate();
Foo.prototype = {
    hoge : 1,
    fuga : 2,
    initialize : function(){
    }
};

比这更好:
var Foo = Class.reate();
Foo.prototype = {
    hoge:null,
    fuga:null,
    initialize : function(){
        this.hoge = 1;
        this.fuga = 2;
    }
};

2
回答不错,但我不会引入“类”(函数兼任经典继承),因为这肯定会让初学者感到困惑。 - max
1
@papirtiger 我同意它们可能会让初学者感到困惑,但由于在使用变量作为属性时存在实际差异的领域,为了简洁起见,我认为包含它们是有益的。 - Timothy Groote

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接