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提升了声明但是并没有赋值,其不能在声明前使用是因为临时死区
  • 相关阅读:
    解决UITableView中Cell重用机制导致内容出错的方法总结
    Hdu 1052 Tian Ji -- The Horse Racing
    Hdu 1009 FatMouse' Trade
    hdu 2037 今年暑假不AC
    hdu 1559 最大子矩阵
    hdu 1004 Let the Balloon Rise
    Hdu 1214 圆桌会议
    Hdu 1081 To The Max
    Hdu 2845 Beans
    Hdu 2955 Robberies 0/1背包
  • 原文地址:https://www.cnblogs.com/smileyqp/p/12675330.html
Copyright © 2011-2022 走看看