var a=1;和a=1;
这个在浏览器中意味着都生成了一个全局变量a,但是调用delete的时候,第一个有var的删不掉,因为delete无法删除变量,第二个可以删掉,a=1;相对于window对象来说是一个window的属性,于是就相当于删掉了window对象的一个属性,是可以删掉的,所以这个意思就是delete无法删除变量,但是可以删除对象的属性,不能删除函数。
至于var的作用域提升,就是类似于这样的情况
function a(){
console.log(a)
var a= 2
}
a()
这个编译时候的实际情况是
function a(){
var a
console.log(a)
a= 2
}
a()
这个就是变量作用域提升