預解析遇到重名,只留一個。如果與函數重名,就只留下函數。
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