js执行上下文笔记

<script>
    //1.总结一句话:执行上下文就是当前JavaScript代码被解析器和执行时存在的环境(抽象的概念)
    //首先被解析然后被执行
    //执行上下文(execution content)
    //2.执行上下文的类型
    //(1)全局执行上下文:这是默认的,最基础执行上下文。不在函数内部的代码都位于全局执行上下文中
    // var str = 'aaa';
    // function test(){
    //     //下面这个str2就不在全局执行上下文中
    //     var str2 = "bbb";
    // }
    // this.str = 'ccc'
    // console.log(str)
    // this.str2 = 'ddd'
    // console.log(str2)
    //创建一个全局对象,其实就是我们的window对象
    //将this指针指向这个全局对象
    //(2)函数执行上下文:每次函数被调用的时候,就会创建一个新的执行上下文
    //每个函数都有自己的执行上下文
    //一个程序中可以存在任意数量的函数执行上下文
    //每一个函数执行上下文被创建,它都会按照特定的顺序执行一系列的步骤
    // (3)eval函数执行上下文:运行在函数中的代码也获得了自己的执行上下文
    //3.执行上下文的生命周期
    // 总的来说:创建阶段-执行阶段-回收阶段
    // 1.创建阶段:当函数被调用但是未执行内部的任何代码之前,会做以下几件事:
    //  1.1创建变量对象:
    //  首先会初始化函数的参数arguments,提升函数声明和变量声明
    //  1.2创建作用域链:在执行上下文创建阶段,作用域链是在变量对象之后创建的,作用域链本身包含变量对象。作用域链用来解析变量。
    //  1.3确定this指向:很多种情况。
    // 2.执行阶段:
    //  2.1执行变量赋值、代码执行。
    // 3.回收阶段
    //  3.1执行上下文出栈,等待虚拟机回收
    // 4.变量声明提升
    // 5.函数声明提升

    //变量声明提升
    // console.log(a)
    // var a=10;
    // console.log(a)

    //函数变量提升
    //函数声明方式:

    //函数

    // var str = 'aaa';
    // function test(name){
    //     //下面这个str2就不在全局执行上下文中
    //     var str2 = "bbb";
    //     this.name = name
    //     console.log(name)
    // }
    // this.test('zhang')//这里的this指向全局
    console.log(f1)
    function f1(){}

    console.log(f2)
    var f2 = function (){}
    //注意:当遇到函数和变量同名且都会被提升的情况,函数声明声明优先级比较高,因此变量声明会被函数声明覆盖
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值