js解析与执行过程

js解析与执行过程分为全局与局部

1:全局,预处理阶段===>执行阶段

2.局部(函数),预处理阶段===>执行阶段

 全局:预处理

 全局的词法环境===window{

a:undefined

b:对函数的一个引用

     }

在全局下找到:
用var定义的变量    eg:var a=5    
用声明方式创建的函数   eg:function b(){}  ,加入到全局的词法环境中

console.log(a);        //undefined
console.log(b);        //报错
console.log(c);        //函数体
console.log(d);        //undefined
var a=2;
b=1;
function c(){alert(11)}
var d=function(){}

f();        //弹出fff
g();        //报错
function f(){alert('fffff')};
var g=function(){alert('ggg')}; //函数表达式

预处理阶段先扫描函数声明后扫描用var的变量声明

//处理函数声明有冲突会覆盖
a;      //function a(){alert(222)};
function a(){alert(111)};
function a(){alert(222)};
//处理变量声明有冲突会忽略
a;        //function a(){alert(111)};
function a(){alert(111)};
var a=11111;

执行阶段:从上到下执行,碰到全局词法下有的覆盖其值,没有的则加入全局词法

局部(函数)预处理:

每调用一次产生一个词法环境

  先函数的参数

  内部声明式函数

  内部var变量

  冲突情况与全局处理一样

如果没有用var声明的变量,会变成最外部词法环境的成员

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值