1.var
var定义的是全局变量和局部变量,可以省略var,一般情况下不会报错,两者使用看似一样实际上存在着区别,执行代码之后x属性没有被删除,y被删除了
通过Object.getOwnPropertyDescriptor()获取对象的属性可以发现,有var定义的x的configurable默认是true,没定义的y的configurable默认是false,当configurable为true是则不会被delete删除。
var 声明全局变量举例来说for循环定义的var也可以在循环外使用
tips:变量提升
var声明全局变量会进行代码提升,举例来说var b =2;会分解成var b;b=2;代码解析的时候会将var b;提升到最前面,并且在内存中开辟空间,因为var b没赋值,所以默认为空。因为a没进行var声明,所以变量没有提升,因此会报错。