同名变量
后声明覆盖先声明的
var a=1;
var a='s';
console.log(a); //'s'
循环内声明
会覆盖外层的,for循环不生成作用域
var a='j';
for(var i=0;i<3;i++){
var a = 'j'+i;
}
console.log(a); //j2
函数内声明
内部声明的属于函数作用域,外层访问不到
var a=1;
function setB(){
var b = 's'
}
setB();
console.log(a,b); //ReferenceError: b is not defined
函数内修改
会被修改
var a=1;
function setA(){
a = 's'
}
setA();
console.log(a); //'s'
var与function声明同名变量
function是预处理,会被var声明的取代
var a=1;
function a(){}
console.log(a); //1
function a(){}
var a=1;
console.log(a);//1
其他
- var声明出来的全局变量都会挂载到window对象上
- var声明变量会提升,变量赋值不会