有没有理由继续使用var?

时间:2018-01-05 16:23:01

标签: javascript declaration var

为什么不禁止'VAR'? 我的问题不是'var'和'let'之间的区别。所有这些答案都提倡使用'let'的优点。 我的问题是:为什么不坦率地说“不再使用'var'了”? 是不是有这么直接的原因?

'var'仍在许多严肃的教程网站上使用:Mozilla MDN,w3schools ......  我想知道是否有一个隐藏的原因,我错过了。

下面有一个答案:旧版(旧浏览器不支持ES6) 这是唯一的原因吗? 任何表现原因? 还是有些花哨的使用吊装?

[这是原帖的其余部分......

var arr = [];    // -> const arr = [];
var obj = {};    // -> const obj = {};
var temp;        // -> let temp;
var f = function(){};    // -> const f = function(){};

这样做,我认为变量可能表现得像var变量(提升等)的唯一方式是 - 在某些函数中不幸 - 未声明的变量:x = sthg;(成为:{ {1}}在全球范围内)。 如果我错过了什么,那对我很有帮助。 ]

1 个答案:

答案 0 :(得分:0)

我去年才考虑过使用var的唯一一次是利用它在代码块之外提升,特别是条件句。像这个人为的例子:

const oneOrZero = shouldBeOne => {
  if (shouldBeOne) {
    var test = 1
  } else {
    var test = 0
  }

  return test
}

在这种情况下,你可以用var替换let,但这总是让我感到麻烦:

const oneOrZero = shouldBeOne => {
  let test

  if (shouldBeOne) {
    test = 1
  } else {
    test = 0
  }

  return test
}

最后,我所做的就是利用三元运算符和const。这具有额外的优点,即在检查初始条件后不能重新分配,这通常是我的意图:

const oneOrZero = shouldBeOne => {
  const test = shouldBeOne
    ? 1
    : 0

  return test
}

TL; DR:我在一年多的时间里没有使用varconst更为可取,通常会迫使我编写更好的代码。 let偶尔会有用。