在JS中声明变量时用var和不用var有什么区别,我查阅了很多的资料和书籍再加上我自己的理解来讲述一下我自己的看法。
- 在函数内部声明变量
在函数内部如果用var声明变量和不用时有很大差别,用var声明的是局部变量,在函数外部访问这个变量是访问不到的,没var声明的是全局变量。在函数外部是可以访问到的。
function ff(){
var a=1;
console.log(a); //1
}
ff();
console.log(a); //a is not defined
如果去掉var来声明变量a:
function ff(){
a=1;
console.log(a); //1
}
ff();
console.log(a); //1
2.全局作用域内声明变量
在这里用var声明的变量我们之所以认为声明的是全局变量是因为它现在处于的作用域范围是全局,实际上它声明也是局部变量,只是现在它的局部变量是全局而已,所以就相当于起着全局变量的作用。全局作用域中不用var声明的也是全局变量,那么它俩有什么区别呢?
比较var a= 1 跟 a= 1,前者是变量声明,带不可删除属性,因此无法被删除;后者为全局变量的一个属性,因此可以从全局变量中删除
var num1 = 1;
num2 = 2;
console.log(num1);//1
console.log(num2);//2
delete num1; //无法删除,会报错
delete num2; //删除
console.log(num2);//num2 is not defined
前者是变量声明,带不可删除属性,因此无法被删除;后者为全局变量的一个属性,因此可以从全局变量中删除。
“`