☆JS作用域:
script:全局变量,全局函数:自上而下
局部函数:由里到外
浏览器:“JS解析器”
<script>
alert(a); // function a (){ alert(4); }
var a = 1;
alert(a); // 1
function a (){ alert(2); }
alert(a); // 1
var a = 3;
alert(a); // 3
function a (){ alert(4); }
alert(a); // 3
a(); //报错: a is not a function
</script>
1、预解析:
var function
a = ... //所有的变量,在正式运行代码前,都提前赋了一个值:未定义(undefined)
fn1 = function fn1(){ alert(2);} //所有的函数,在运行代码前,都是整个函数块
遇到重名:只留一个
变量和函数重名,就只留下函数
2、逐行解读代码:
表达式:= + - * / % ++ -- ! //表达式可以修改预解析的值
若遇到调用局部函数:
(1)预解析: var function 参数
(2)逐行解析代码
......
☆练习:
/*
var a = 1;
function fn1(){
alert(a); // undefined
var a = 2;
}
fn1();
alert(a); // 1
*/
/*
var a = 1;
function fn1(){
alert(a); // 1
a = 2;
}
fn1();
alert(a); // 2
*/
/*
var a = 1;
function fn1(a){
alert(a); // undefined
a = 2;
}
fn1();
alert(a); // 1
*/
/*
var a = 1;
function fn1(a){
alert(a); // 1
a = 2;
}
fn1(a);
alert(a); // 1
*/
<mark>妙味课堂</mark>