作用域
1.作用域
域:空间、范围、区域....
作用:读、写
JS解析器
/*
1.找一些东西:var 、function、参数
a=未定义 所有变量,在正式运行代码之前,都提前赋了一个值:未定义
fn1=function fn1(){alert(2);}
所有的函数,在正式运行代码之前,都是整个函数块
JS的预解析
遇到重名的:只留一个
变量和函数重名了,就只留下函数
2.逐行解读代码
表达式:= + * / % ++ -- !......
*/
alert(a); //未定义
var a=1;
function fn1(){alert(2);}
预解析实例
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();//报错
/*
1.预解析:var function 参数 。。。
a=function a(){alert(4);}
*/
域
自上而下、由里向外(作用域链)
var a=1;
function fn1(){
alert(a); //未定义
var a = 2;
}
fn1();
alert(a); //1
/*1.预解析:
a=underfind;
fn1=function(){alert(a);var a=2;}
2.逐行解读代码:
表达式
a=1;
读到函数没有执行,再往下读遇到函数调用
1)预解析
a=未定义
2)逐行解读代码:
*/
var a=1;
function fn1(var a){
alert(a); //未定义
a = 2;
}
fn1();
alert(a); //2
/*1.预解析:
a=underfind;
fn1=function(){alert(a);var a=2;}
2.逐行解读代码:
表达式
a=1;
读到函数没有执行,再往下读遇到函数调用
1)预解析
a=未定义
2)逐行解读代码:
*/
var a=1;
function fn1(var a=1){
alert(a); //1
a = 2;
}
fn1(a);
alert(a); //1
/*1.预解析:
a=underfind;
fn1=function(){alert(a);var a=2;}
2.逐行解读代码:
表达式
a=1;
读到函数没有执行,再往下读遇到函数调用
1)预解析
a=未定义
2)逐行解读代码:
*/
想要获取函数内的值:
//第一种方法
var str="";
function fn1(){
var a='大鸡腿~';
str=a;
}
fn1();
alert(str);//大鸡腿~
//第二种方法
function fn2(){
var a="11111111";
fn3(a);
}
fn2();
function fn3(a){
alert(a);
}

浙公网安备 33010602011771号