在Javascript中分配多个值之前声明var?

时间:2013-08-05 17:13:13

标签: javascript

在Javascript中,var声明的格式更好:

function test1() {
  switch(type) {
    case 1:
        var test = "Hello One"
      break;
    case 2:
        var test = "Hello Two"
      break;
  }
}

或者:

function test2() {
  var test;

  switch(type) {
    case 1:
        test = "Hello One"
      break;
    case 2:
        test = "Hello Two"
      break;
  }
}

test2()中,在分配值之前,有一行额外的代码要将test声明为var,但这样可以节省{{1}两次。哪种方式比另一方好?

3 个答案:

答案 0 :(得分:7)

javascript没有块范围,因此在switch块中声明变量不会像预期的那样工作。

此外,由于variable hoisting,函数块中的所有变量声明都被解释器提升到顶部,您的代码将如下所示:

function test1() {
  var test;
  var test;

  switch(type) {
    case 1:
        test = "Hello One"
      break;
    case 2:
        test = "Hello Two"
      break;
  }
}

执行提升后,很容易看出为什么第一个块不正确。

答案 1 :(得分:4)

IMO第二个应该是首选。

它更具沟通性,更接近实际发生的事情(例如,variable hoisting)。

我也不喜欢将变量声明隐藏在外观之类的范围内,但不是。

答案 2 :(得分:2)

你的第一个代码错了;你已经多次声明了同一个变量。

JSHint会抱怨它。