美文网首页
变量提升预处理和执行上下文,如何避免变量提升

变量提升预处理和执行上下文,如何避免变量提升

作者: 9月的甜橙子 | 来源:发表于2021-09-27 23:16 被阅读0次

js引擎在代码执行之前会做一个预处理的工作:收集变量和收集函数
预处理工作的依据是:var和function{}
对于var username='xiaoming', 会定义username变量但是不会赋值,所以此时username是undefined
对于function{}会提前定义函数
以上预处理工作做完后,会正式执行代码

console.log(username); // undefined
var username = 'xiaoming';
console.log(username); // xiaoming

fun() // have fun!
function fun(){
  console.log('have fun!')
}

执行上下文 (execute context, EC)

代码在执行之前会进入执行环境,即执行上下文。
注意执行上下文是在执行前,而作用域是在定义时。
形成执行上下文做的工作有:

  1. 创建变量
  2. 确定this指向
  3. 创建作用域链

总结:
ECObj={
变量对象:变量,函数,函数形参,
this:{window || 调用它的对象},
scopeChain: 父级作用域链+当前的变量对象
}


如果本文对您有帮助,请给我点赞哦~ 谢谢~

相关文章

  • 变量提升预处理和执行上下文,如何避免变量提升

    js引擎在代码执行之前会做一个预处理的工作:收集变量和收集函数预处理工作的依据是:var和function{}对于...

  • 深入理解 JavaScript 执行上下文和执行栈

    深入理解 JavaScript 执行上下文和执行栈 函数上下文有变量提升的概念:但提升的只是声明 联系:上下文环境...

  • 变量函数提升与执行上下文

    变量与函数提升 作用域与执行上下文的区别 执行上下文 执行上下文栈 作用域 作用域链

  • Javascript 变量执行过程 和 数组 & 对象的区别

    变量提升 JS执行过程1. 先提升(先提升函数,再提升变量,如果名字一样,变量提升会覆盖函数提升)2. 再执行,如...

  • js 随笔

    js 执行机制: js执行上下文: 只有理解了js 执行上下文才能更好的理解 js变量提升以及 作用域和闭包 所谓...

  • 变量提升&&执行上下文

    //变量提升 预处理js引擎在代码正式执行之前会做一个预处理的工作:1.收集变量2.收集函数依据:var 将va...

  • 浏览器中的JavaScript执行机制

    变量提升:JavaScript代码是按顺序执行的吗? 变量提升(Hoisting)所谓的变量提升,是指在 Java...

  • 块级私有上下文

    之前已经总结过: 全局执行上下文:全局对象GO-->变量提升-->代码执行 函数的执行会形成函数私有上下文:-->...

  • 变量提升和函数提升

    变量提升 所谓变量提升,就是变量的声明在执行前会被提升到改作用域顶部。 代码在执行前会被处理成如下形式: 函数提升...

  • var,let,const 的区别

    变量提升 变量提升即将变量声明提升到它所在作用域最前面,而且仅仅是提升变量,不会提升所赋的值 执行流程 作用域 在...

网友评论

      本文标题:变量提升预处理和执行上下文,如何避免变量提升

      本文链接:https://www.haomeiwen.com/subject/cvaugltx.html