ES5的作用域与解析顺序一一仅做了解

面试题(概率不大)
1作用域:定义了变量之后,变量会再一定范围里面起作用,这个起作用的范围就是作用域;

2.ES5中的关键词
1)var
特性:变量提升:解析代码的时候,会先读(当前作用域中)所有的var,并且只解析变量的名字,等号后面是不解析的
例如:

console.log(x);//undefined
var x=10;

//解析如下
var x;
console.log(X);//所以打印undefined
x=10;
//区别于let
console.log(x);//报错
let x=10;

2)function,匿名函数不能定义变量。
特性:在定义阶段(预解析阶段),function定义的函数会被看成一个整体,里面的代码不会读取
例如
在这里插入图片描述

3)预解析步骤

  • 定义过程

1.会查找该层作用域所有的var声明的变量名/找到当前作用域中的var定义的变量(只定义变量,不会提前赋值),和function定义的有名函数块。/找到当前作用域中的function定义的函数

2.var声明的变量名此时仅仅只是变量名,后面的 = 号不会在这一步执行,也就是说在这一步,所有var的变量都是初始值undefined。

  1. var var重名只留一个,var function重名留function,function function重名留后面的。
  • 执行过程

会从上到下的执行代码/从头开始,往下执行代码

例如
定义var
在这里插入图片描述
两个var变量重复
在这里插入图片描述
var和function
在这里插入图片描述
var和function重名,以function为准
在这里插入图片描述
function重名,后来者居上
在这里插入图片描述
预解析步骤总结;
在这里插入图片描述

预解析练习
在这里插入图片描述
在这里插入图片描述20:alert(x);//报错,因为没有找到当前的作用域的x

在这里插入图片描述

alert(a);
var a = 10;
alert(a);
function a(){alert(20)}
alert(a);
var a = 30;
alert(a);
function a(){alert(40)}
alert(a);

执行过程
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值