面试题:a=10和var a = 10什么区别。

241 阅读1分钟

使用var定义的,是一个全局变量,同时会在windows下创建一个对应的属性,但是不可以被delete掉。

var a = 1;
delete a; // false

不使用var定义的,只是在windows下创建一个属性,并不会在全局下创建变量,可以通过delete删除掉。

a = 1;
delete a; // true

所以严格来讲,关键字定义才是符合ECMA规范,而之所以不使用var也可以,只是因为宿主环境提供了这个条件。

es6尽量祛除windows这个恶心人的东西,所以let const定义的都不会在windows下创建同名属性。