1、在JS函数的使用中,函数无参数的情况下:函数作用域内定义变量加上var,则是局部变量,不加var成为全局
例:
var a=10;
function change(){
//a=11; 执行这个,下面console.log(a)出来是11,a是全局变量(重新赋值)。
//var a=11; 执行这个,下面console.log(a)出来是10,a是局部变量。
}
change();
console.log(a);
如果函数中有参数传进的话:a=11就是给参数重新赋值,改变不了全局变量
var a=10;
function change(a){
a=11;//
console.log()//打印出来的是11
}
change(12);
console.log(a);//打印出来的是10
2、var的存在对于全局作用域还是局部作用域是声明和提升的作用
JS程序在执行之前,除去会检查语法错误之外,还会检查var声明的变量,把var声明提升到作用域的最前面,但这里赋值还是在原来的地方
var b=1;
function change1(){
//var b; 下面定义var b=2,实际是在这里先检查声明
console.log(b);
//b=2; 之后在这里赋值
var b=2;
}
change1();
上面程序执行会打印出undefined而不会打印出1或者2,因为在函数局部作用域里面只声明未赋值。
所以不加var,是变量未声明,只是赋值,var完成了变量的声明+赋值
PS:
console.log(c);
//var c=1; 这种定义会打印出undefined
//c=1; 这种就会直接报错