zoukankan      html  css  js  c++  java
  • (九)执行上下文&变量提升案例分析

    执行上下文的三个重要属性:
    • 变量对象VO (变量;函数声明;函数的形参)
    • 作用域链(JS采用词法作用域;其作用域在其定义时候就已经决定)
    • this

    在生成上下文的时候会有两个阶段

    • 第一阶段(创建阶段):
      • JS解释器会找出需要变量提升的变量以及函数,给他们开辟好内存空间
      • 函数会整个存进去
      • 变量只声明并且赋值为undefined
      • 变量提升过程中;相同函数会覆盖上一个函数并且函数优先于变量提升
    b() // call b
    console.log(a) // undefined
    
    var a = 'Hello world'		//变量声明并赋值为unedfined
    
    function b() {				//创建VO时候偶函数整个保存
    	console.log('call b')
    }
    
    • 第二阶段(代码执行阶段)
    b() // call b second
    
    function b() {
    	console.log('call b fist')
    }
    function b() {					//变量提升;同样函数后面一个会覆盖前面一个
    	console.log('call b second')
    }
    var b = 'Hello world'
    
    注意
    • let不能在声明前使用;let并非是没有变量提升才不能在声明前使用;而是let提升了声明但是并没有赋值,其不能在声明前使用是因为临时死区
  • 相关阅读:
    搜狗输入法--评价
    课堂练习--找水王
    学习进度条---第十二周
    Java接口与继承动手动脑
    Java数组课后作业
    Java语言String字符串课后作业
    Java类和对象课后作业
    Java语言第四讲
    Java语法基础----课后实践作业
    Java课堂作业-------参数求和
  • 原文地址:https://www.cnblogs.com/smileyqp/p/12675330.html
Copyright © 2011-2022 走看看