ES6/JavaScript - 在没有 let/const 的情况下声明变量

Com*_*ine 9 javascript

好的,我的问题很简单:在 JavaScript / ES6

当你有类似的事情时会发生什么

 x = 5;

 console.log(x);  // 5
Run Code Online (Sandbox Code Playgroud)

解释器是在运行时自动添加“let”还是为什么它可以正常工作而没有错误?




编辑:严格模式 ES5 的语法允许称为隐式全局变量的东西,这是许多令人沮丧的编程错误的根源。简而言之,如果你忘记用 var 声明一个变量,JavaScript 会很高兴地假设你指的是一个全局变量。如果不存在这样的全局变量,它会创建一个!你可以想象这造成的问题。

我知道了。感谢您的所有评论。我现在明白为什么会这样了。谢谢!

小智 6

通过省略letconstvar在非严格模式下,您可以在全局对象上创建一个属性。

顺便说一下,默认情况下babel会添加"use strict";。所以你会得到一个错误babel

你可以在这里尝试:https : //babeljs.io/repl/