js中的执行上下文总结es3

之前一直不懂什么是js中的执行上下文,花了整整一天的时间终于弄明白后,现在却感觉无从下手了。

总结:js代码执行之前的准备工作就叫做执行上下文。

分为3种,但是现在我们一般只看两种:全局上下文和函数上下文。

这篇文章主要说说函数上下文:

函数上下文的执行过程分为2步:预编译和执行。

预编译分为4步:

  1. 创建AO对象,寻找形参和变量声明
  2. 把形参和变量名作为AO对象的属性名,值为undefined
  3. 把实参赋给形参,实参形参统一
  4. 寻找函数声明,值为函数体(提现形式为字符串)

注意点1:

    function foo(i) {
       a = 1;
    }
    foo(3);
    console.log(a) ;1

函数中的变量没有进行声明,统一为全局变量,但是要在执行函数后生效,如果没有执行,会报错 a is not defined

注意点2:

 var message = 'global'
    function foo(){
        console.log(message)
    }
    function bar (){
        var message = 'Bar'
        foo()
    }
    bar() // global

 var message = 'global'
   
    function bar (){
        var message = 'Bar'
         function foo(){
            console.log(message)
        }
        foo()
    }
    bar() // Bar

函数作用域的区别,注意 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值