为什么许多 javascript 示例仍然使用“var”而不是“const”和“let”?

rad*_*orz 6 javascript var node.js

比如cubejs:

<script>
  var cubejsApi = cubejs(
    'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1NTIzOTk5MjcsImV4cCI6MTU1MjQ4NjMyN30.SOO-A6GfGH7ar3EoeBb0cjj10BVxO3ffjvmqQziXIZA',
    { apiUrl: 'http://localhost:3000/cubejs-api/v1' }
  );
 ...
</script>
Run Code Online (Sandbox Code Playgroud)

比如vue或者nodejs的例子现在我应该使用'var'吗?

Pus*_*kin 9

还是一两年前,Babel 仍在将let和转译const为 和var,尽管如果它发现两个变量或常量分别在同一函数的不同块中用let和声明const,则会被赋予不同的名称,以避免冲突。

转译为的主要原因var是,很少有浏览器没有更新以支持 ES6 语法。目前,大多数浏览器都支持 ES6/ES7 代码而无需转译,Firefox 甚至支持部分 2021 功能。您可以在此处检查兼容性

之所以有许多代码和示例仍然使用 var,是因为并非每个开发人员都已检查过他们的存储库并更新了代码。

那么你现在应该使用 var 吗?

不!除非真的、真的、真的有特定的理由让你使用var、使用letconst。即使您找到了绝对使用的理由var,也可能会归咎于您的编码风格和更改。

  • 如果你使用“var”,那么宣称“var”是低劣的,并且你的风格很糟糕,这是荒谬和傲慢的。如果您想在“if”和“try”等块中声明变量,“var”仍然很有用,这样您就不必像 C++ 穴居人一样在顶部声明这些变量。 (2认同)
  • 这就像你的意见一样。我不同意这种糟糕的编码实践。当变量可以在初始化的同一行中声明时,函数通常更具可读性,而不是在顶部运行大量空的“let”——尤其是当 linter 敦促人们在其上声明每个空变量时自己的线。它只是将函数中有意义的信息分散开的噪音。它是反可读的,团队与非团队与此无关。 (2认同)