【问题标题】:Should I declare JavaScript variables and then initialize right after?我应该声明 JavaScript 变量然后立即初始化吗?
【发布时间】:2015-04-16 06:43:01
【问题描述】:

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

var x = 5 ;
var y = 6 ;

代替:

var x , y ;

x = 5;
y = 6 ; 

【问题讨论】:

  • 这取决于您对这些变量的使用情况。
  • 在 JS 中真的没关系。只要你在引用它们之前初始化它们。
  • “在声明后立即初始化是最佳实践”。不,这不对。如果您知道变量的值,最好立即声明和初始化它。
  • 为了安全起见,在声明后立即声明和初始化?
  • 没关系。但是,如果您知道要初始化什么值,请在声明后立即执行以更安全。

标签: javascript


【解决方案1】:

如何实际声明变量是一个偏好问题。 如果您一个接一个地声明多个变量,您可以省略 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 大师 Douglas Crockford recommends 将变量定义列在每个函数的顶部,以使习惯于具有适当块范围的语言的程序员更加清楚这一点。

更新:

在现代 javascript 中不推荐使用var。所有现代浏览器都支持letconst,它们具有真正的块作用域并且不会被提升到函数的顶部。

【讨论】:

    【解决方案2】:

    如何做到这一点不会以任何方式影响执行,只是一个关于可读性的问题。

    如果您喜欢声明,则单独分配,一定要这样做。

    如果您使用像 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;
        }
    };
    

    【讨论】:

    • 好的答案,但我不会引入“类”(作为经典继承的兼职功能),因为它一定会让初学者感到困惑。
    • @papirtiger 我同意它们可能会让初学者感到困惑,但由于它们是在使用变量作为属性时操作存在实际差异的领域,我认为为了简洁起见,最好包括它。
    猜你喜欢
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 2019-05-02
    • 2011-04-15
    相关资源
    最近更新 更多