alert(a)
a();
var a=3;
functiona(){
alert(10)
}
alert(a)
a=6;
a()
1.函数声明优先于变量声明,所以,刚开始,a就是
2.
3.执行了
4.由于
function a(){alert(10)}
,就会看到这个函数。
2.
a()
,执行函数,就是出现
alert(10)
3.执行了
var a=3;
所以
alert(a)
就是显示
3
4.由于
a
不是一个函数了,所以往下在执行到
a()
的时候, 报错。
var a=0;
functionaa(){
alert(a)
var a=3
}
aa();
//undefind
在aa函数里面,有var a=3,那么在aa作用域里面,就是把a这个变量声明提前,但是不会赋值,所以是underfind;
var a=0;
function aa(a){
alert(a)
var a=3
}
aa(5)
alert(a)
//5,0
在函数体内,参数a的优先级高于变量a
var a=0;
function aa(a){
alert(a)
a=3
}
aa(5)
alert(a)
//5,0
在函数体内,执行alert(a)和a=3,修改的的并不是全局变量a,而是参数a
var a=0;
function aa(a){
alert(a)
var a=3
alert(a)
}
aa(5)
//5,3
//1.参数优先级高于变量声明,所以 变量a的声明其实被忽略了,此时相当于
//var a=0;
//
function aa(a){
// var a=5;
// alert(a)
// a=3
// alert(a)
//
}
//aa(5)
//2.形参和局部变量优先级一样,此时相当于
//var a=0;
//
function aa(a){
// var a; 先声明
// a=5 由于形参和变量名称一样,覆盖了!
// alert(a)
// a=3
// alert(a)
//}
//aa(5)
var a=0;
function aa(a){
alert(a)
a=3
alert(a)
}
aa()
alert(a)
//underfind 3 0
//首先,参数优先级高于全局变量,由于没传参数,所以是underfind
//a=3,实际上修改的时形参a的值,并不是全局变量a,往下alert(a)也是形参a
//最后的alert(a),你懂的