JavaScript 中的作用域、预解析与变量声明提升的理解

作用域:就是变量的有效范围。
如何检测一个变量的作用域:在指定的区域内使用这个变量,如果不报错,说明这个变 量的作用域包含此区域。
函数作用域:只有函数能够划分变量的作用域,这种作用域的规则就叫函数作用域。 如果在函数内访问一个变量,优先找局部变量和形参,如果没有找到,去定义该函数的环境 中查找,直到全局为止。
在 ES6 之前,只有函数可以划分变量的作用域,所以在函数的外面无法访问函数内的 变量。在 ES6 之前,没有块级作用域的概念,所以在代码块的外面可以访问代码块内的变 量
块级作用域:凡是代码块就可以划分变量的作用域,这种作用域的规则就叫块级作用域。

块级作用域 函数作用域 词法作用域
之间的区别:
1、块级作用域和函数作用域描述的是,什么东西可以划分变量的作用域
2、词法作用域描述的是,变量的查找规则。
之间的关系:
(1)、 块级作用域 包含 函数作用域。
(2)、 词法作用域 与 块级作用域、函数作用域之间没有任何交集, 他们从两个角度描述了作用域的规则。
ES6 之前 js 采用的是函数作用域+词法作用域,ES6 js 采用的是块级作用域+词法作用 域。

预解析:
在代码整体执行之前,先解析一部分。 预解析之后,代码才会从上往下依次整体执行,但是预解析执行过的代码不会重复执行。
js 预解析干了什么事:js 中预解析会把声明部分的代码预先执行。 声明相关的代码可以分为两部分:
1、 变量声明
通过 var 关键字定义的变量。
2、函数声明
通过 function 关键字声明的函数
预解析时如果遇到重复的变量声明,那么忽略。 预解析时如果遇到重复的函数声明,保留后面的函数。 预解析时如果遇到变量与函数重名的情况,保留函数。
变量声明提升:
使用 var 关键字定义的变量,被称为变量声明; 函数声明提升的特点是,在函数声明的前面,可以调用这个函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值