IT培训网更多 收回

IT培训
关注我们
微信公众号 回复"大礼包"享福利 学习交流群 分享IT知识
|

IT在线学习更多 收回

热门课程 更多 >
  • Java开发
  • Web前端
  • Python+人工智能
  • 全链路UI/UE设计
  • VR/AR游戏开发
  • 大数据
  • 室内设计
  • PMP认证
  • 互联网营销
  • 全域电商运营
  • 新媒体与短视频运营
  • 软件测试
  • Linux云计算
  • Office
  • 计算机二级
  • 计算机软考
OAO训练营
不离岗 不离校 学门IT技术
优学VIP
16大类IT课程 提升职场竞争力
关注我们
下载【IT优学】 缓存视频随时随地学 微信扫码关注 回复“大礼包”享福利
| 初高中软件培训| 中公企商培训| 中公联合办学| 优校邦| 中公PMP| 中公软考| 计算机二级培训| 趣码AI
登录 | 注册
400-650-7353

精品课程

您所在的位置:首页 > IT干货资料 > web前端 > 【Web前端基础知识】预解析(变量提升)

【Web前端基础知识】预解析(变量提升)

  • 发布: Web前端培训
  • 来源:Web前端干货资料
  • 2020-12-18 16:18:48
  • 阅读()
  • 分享
  • 手机端入口
  • 活动 5天IT课程 申请试学
  • 活动 申请免费基地参观
  • 活动 申请中公购书补助

今天为大家介绍一下一下JavaScript中的预解析(变量提升)。从什么是预解析及变量的预解析和函数的预解析及加载流程进行学习(注意:我们这里说的ES5中的预解析)。

什么是解析

首先代码执行肯定需要一个执行环境,浏览器会提供一个供javaScript执行的全局作用域window。但是在javaScript执行之前会进行预解析,又称之为变量提升。预解析可以分为两部分:

- 声明(declare): var a; 简单的去理解声明就是我们声明一个变量没有赋值;

- 定义(defined):a= 100; 定义相当于给这个变量进行赋值;

在javaScript执行之前浏览器会把全局作用域下所有带有var和function关键字的进行预解析(注意是带有var和function关键字的),这也就是为什么我们学习预解析去学习变量的预解析及函数的预解析原因,变量的预解析和函数的预解析存在一定的区别如下:

- var :在预解析的时候只声明不定义

- function:在预解析的时候声明+定义都已经完成了

变量的预解析

现在有如下代码:

  1. console.log(a);//undefined   在代码执行之前进行预解析  只声明没有定义只是undefined  
  2. var a = 10
  3. console.log(a);//10   

为了方便我们理解如图:

这也就是为什么在我们看到var a = 10;之前去输出a没有报错而是输出undefined;声明一个变量没有进行赋值那么就是undefined;

函数的预解析及加载流程

前面我们说过了函数再预解析的时候声明+定义都已经完成了,现在有如下代码:

  1. //定义一个函数sum 
  2. function sum(){ 
  3.    Console.log(“javascript”); 
  4. sum();//->javascript    每次调用都重新执行 
  5. sum();//->javascript    每次调用都重新执行 
  6. sum();//->javascript    每次调用都重新执行 

我们先去看下函数的加载流程:

1. 函数在预解析的时候声明+定义都已经完成了

2. 因为函数是引用数据类型,会新开辟一个堆内存空间,将函数以字符串的形式进行存储,并且会给这堆个内存空间分配一个内存地址比如xxxfff000

3.函数的调用的时候,会开辟一个新的私有作用域,将函数体中内容从上到下依次执行

4.函数每一次调用都是相互独立的,并且函数执行完毕之后自动销毁

方便大家理解加载流程如图所示:

从上图可以分析出函数先进性了预解析,在预解析的时候声明+定义都已经完成了,并且开辟了一块堆内存空间将函数以字符串的形式进行存储,并且给这块堆内存分配一个内存地址便于我们使用的时候去找到它,因为这个时候函数以字符串的形式进行存储,也就是为什么函数定义函数不去调用是不能执行的。当我们调用的时候发现,开辟了个一个新的私有作用域,函数体从上到下去执行,并且每一次调用都会形成新的私有作用域,所以是相互独立的,并且每一个私有作用执行完毕就自动销毁了,是浏览器内置的垃圾回收机制。这样保证了性能优化。

学习疑问申请解答
您的姓名
您的电话
意向课程
 

中公优就业

IT小助手

扫描上方二维码添加好友,请备注:599,享学习福利。

>>本文地址:
注:本站稿件未经许可不得转载,转载请保留出处及源文件地址。

推荐阅读

优就业:ujiuye

关注中公优就业官方微信

  • 关注微信回复关键词“大礼包”,享学习福利
QQ交流群
在线疑问解答
(加群备注“网站”)
IT培训交流群 加入群聊 +
软件测试 加入群聊 +
全链路UI/UE设计 加入群聊 +
Python+人工智能 加入群聊 +
互联网营销 加入群聊 +
Java开发 加入群聊 +
PHP开发 加入群聊 +
VR/AR游戏开发 加入群聊 +
大前端 加入群聊 +
大数据 加入群聊 +
Linux云计算 加入群聊 +
优就业官方微信
扫码回复关键词“大礼包”
享学习福利

测一测
你适合学哪门IT技术?

1 您的年龄

2 您的学历

3 您更想做哪个方向的工作?

获取测试结果
 
课程资料、活动优惠 领取通道
 
 
  • 申请试听
  • 干货资料
  • 网课咨询
  • 学习交流群
  • 返回顶部