什么是预解析?函数预解析和变量预解析的区别

【预解析定义】浏览器在执行页面代码之前,会先把页面代码都扫描一遍,并把 声明式的函数和变量 都提到所在作用域的最前端
<涉及变量提升与函数提升两个概念>

(1)<变量预解析—变量提升>
变量提升,分为全局作用域变量提升和局部变量提升
<1>全局变量提升,在预解析阶段,浏览器的JS引擎,会将所有 变量 的声明部分,都提到所在作用域(整个页面代码)的 最前端


y1.png

<2>局部变量提升:在函数内部 ,局部变量在预解析时,会把 变量 的声明部分 ,提升到当前函数内部的最前端, 然后再执行

y2.png

(2)<函数预解析—函数提升>
在浏览器预解析阶段,浏览器的JS引擎会将所有 声明式函数 都提到所在作用域的 最前端, 之后再进行代码由上而下执行
只有声明式函数才有函数提升,匿名方式和对象方式创建的函数,在预解析时不会做函数提升


y3.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 29,224评论 1赞 45
  • 代码解析参与者 需要了解变量是如何进行预解析的,首先要知道解析代码的参与者,有三个:引擎、编译器、作用域 编译器对...
    素弥阅读 673评论 0赞 1
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,869评论 1赞 32
  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 2,718评论 0赞 7
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 5,030评论 0赞 5

友情链接更多精彩内容