为什么许多javascript示例仍然使用';var';而不是';常数';和';让';?

为什么许多javascript示例仍然使用';var';而不是';常数';和';让';?,javascript,node.js,var,Javascript,Node.js,Var,例如cubejs: <script> var cubejsApi = cubejs( 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1NTIzOTk5MjcsImV4cCI6MTU1MjQ4NjMyN30.SOO-A6GfGH7ar3EoeBb0cjj10BVxO3ffjvmqQziXIZA', { apiUrl: 'http://localhost:3000/cubejs-api/v1' } ); ...

例如cubejs:

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

var cubejsApi=cubejs(
“eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1NTIzOTk5MjcsImV4cCI6MTU1MjQ4NjMyN30.SOO-A6GFGH7AR3EOEBB0CJJ10BVXO3FFJVMQZIXIZA”,
{apiUrl:'http://localhost:3000/cubejs-api/v1'}
);
...
例如vue或nodejs的示例
现在我应该使用“var”吗?

const
let
在大多数情况下更好,但仍有少数情况下
var
更正确

对于您直接提出的问题,
var
可能仍然用于遗留原因。它在所有版本的JavaScript中都受支持,在互联网上更改每一个示例都会很麻烦


var
的唯一真正优势是它的兼容性。如果您是为旧平台(如旧手机或旧浏览器)编写,或者您必须支持旧平台(如旧手机或旧浏览器),那么
var
是您唯一的选择。

还是一两年前,巴贝尔仍在将
let
const
转换为
var
,尽管如此,如果它在同一函数中的不同块中找到两个分别用
let
const
声明的变量或常量,它将被赋予不同的名称

主要原因是,很少有浏览器没有更新以支持ES6语法。目前,大多数浏览器都支持ES6/ES7代码而无需传输,Firefox甚至支持2021的一些功能。你可以查一下电话号码

有很多代码和示例仍然使用var的原因是,并不是每个开发人员都经过了repo并更新了代码

那么您现在应该使用var吗?
不!除非真的,真的,真的有一个具体的原因让你使用
var
,否则使用
let
const

“我现在应该使用'var'吗?”没有。因为使用
var
更新互联网上的每一个代码示例还没有发生过!新东西?->使用
let
/
const
;老东西?->如果有用,就不要碰它。如果您打算重构代码,那么这可能是列表中的另一点。而且@Andreas Google的编码风格指南(每当我的雇主认为公司需要一个编码标准时,我都会宣传该指南)特别有一节说,除非你有bug需要修复,否则你不应该编辑旧代码。主要的理由是,对一些琐碎的东西进行大的更改会污染回购历史,并使得在调试时对代码更改的原因进行推理变得更加困难,“但仍然有一些情况下var更正确。”我还没有找到这些情况。我问了很多问题,我得到的唯一答案是“当你想在没有错误的情况下重新声明变量时,可以使用var”。虽然这是真的,但对此的回应是,您不应该重新声明变量。如果你这样做了,你的应用程序有错误的流程,而你使用的是<代码> var >代码,作为一个创可贴,以避免纠正它。那么,除了重新声明,什么时候
var
更正确?编辑:为了澄清,当您还可以使用
let
/
const
时,
var
更正确吗?如果您不知道发动机的性能,则@VLAZ
var
更正确。在现代网站上,有很多反对
var
的好论据,但在
.HTA
工具和旧平台上,这些替代方案是不起作用的。正如我在回答中所说:遗产原因。我想对于新用户来说,也有关于简单性的争论。限制
关键字的数量
他们必须知道才能开始。我并不反对让/
常量
,尤其是在现代网络上,但说没有
var
的用例是完全错误的。正如我在何时可以使用
/
常量
时所阐明的那样。不言而喻,如果您不能使用它们,那么您只能依赖
var
。但如果你真的有其他选择,我看不到任何实际的优势。即使对于初学者来说,简化事情也是一个不好的理由-
var
只是更复杂,所以更容易陷入一种奇怪的情况。如果你真的想减少初学者需要学习的东西,那么只需将它们技术化
let
。假设
const
是如此巨大的精神负担。@VLAZ哇,刚刚看到你的编辑。当
let
/
const
可用时,它们是更好的选择,应该在现代互联网上使用。如果您知道代码将在那里运行,那么就不用担心了。但是,如果您有一些东西必须在任何可能访问它的东西上运行,
var
可能仍然是更好的关键字。请注意,在许多情况下,您仍然可以使用Babel来传输代码。因此,即使目标环境不支持,您也可以使用
let
/
const
。Babel将确保保留代码的语义。e、 例如,
函数foo(x){if(true){let x=5;}返回x;}
不会重新分配参数值。巴别塔是否适合某一特定项目可能会有所不同,但它确实意味着使用
var
(除其他外)的理由较少,并且总体上代码问题较少。