预解析遇到重名,只留一个。如果与函数重名,就只留下函数。
console.log(a);// function a(){console.log(4)}
var a = 1;
console.log(a); // 1
function a(){
console.log(2);
}
console.log(a);// 1
var a = 3;
console.log(a); //3
function a() {
console.log(4);
}
console.log(a());//报错
自上而下,由内而外
<script type="text/javascript">
alert(a);//报错
</script>
<script type="text/javascript">
var a = 1;
</script>
--------------------------------------------------
<script type="text/javascript">
var a = 1;
</script>
<script type="text/javascript">
alert(a);//1
</script>
var a = 1;
function test() {
alert(a);
var a = 2;
}
alert(a);//1
test();// undefined
var a = 1;
function test() {
alert(a);
a = 2;
}
test();// 1
alert(a);// 2
var a = 1;
function test() {
alert(a);
a = 2;
}
alert(a);// 1
test();// 1
var a = 1;
function test(a) {
alert(a);
a = 2;
}
test();// undefined
alert(a);// 1