作用域:
域:空间、范围、区域……作用:读、写 script 全局变量、全局函数 自上而下 函数 由里到外 {} 浏览器: “JS解析器” 1)“找一些东西” :var function 参数 a = ... 所有的变量,在正式运行代码之前,都提前赋了一个值:未定义 fn1 = function fn1(){ alert(2); } 所有的函数,在正式运行代码之前,都是整个函数块 JS 的预解析 遇到重名的:只留一个 变量和函数重名了,就只留下函数 2)逐行解读代码: 表达式:= + - * / % ++ -- ! 参数…… 表达式可以修改预解析的值!下面看一个小例子:
alert(a); // function a (){ alert(4); }
var a = 1;alert(a); // 1function a (){ alert(2); }alert(a); // 1var a = 3; alert(a); // 3function a (){ alert(4); }alert(a); // 3alert( typeof a );
全局与局部的问题:
var a = 1;
function fn1(a){ alert(a); // undefined a = 2;}fn1();alert(a); // 1var a = 1;function fn1(a){ alert(a); // 1 a = 2; //注意,这里 a = 2;就是修改了全局的a;如果是 var a = 2 那么函数里面的a就是局部}fn1(a);alert(a); // 1