好的,我的问题很简单: 在JavaScript / ES6中
当你有类似
之类的东西时会发生什么 x = 5;
console.log(x); // 5
是解释器在运行时自动添加“let”还是为什么它没有错误?
编辑:严格模式 ES5的语法允许一些称为隐式全局变量的东西,它们就是 许多令人沮丧的编程错误的来源。简而言之,如果你忘了宣布一个 使用var的变量,JavaScript会愉快地假设您指的是全局变量 变量。如果不存在这样的全局变量,它将创建一个!你可以想象 这引起的问题。
我明白了。谢谢你的评论。我现在明白为什么会这样。谢谢!
答案 0 :(得分:1)
在这种情况下,x成为全局变量。尽量避免这种情况,因为浏览器上的全局变量很难。
答案 1 :(得分:1)
这里没有关于ES6的内容。你刚创建了一个全局变量,因为你不在struct mode
。
顺便说一下,babel
默认会添加"use strict";
。因此babel
会出错。
您可以在此处试用:https://babeljs.io/repl/
答案 2 :(得分:0)
加上前两个答案:
没有关键字的赋值将返回值:
> const x = 4
undefined
> let y = 4
undefined
> var z = 4
undefined
> a = 4
4
在某些缩小器中使用删除关键字来减少有效负载