你可能需要知道的前端小知识——JavaScript语句执行
回顾:
JavaScript
函数的执行JavaScript
的执行
JavaScript
语句执行的基本类型
Completion Record
[[Type]]
:完成的类型,包括normal
、break
、continue
、return
、throw
[[Value]]
:语句产生的返回值,取值为基础类型值或者空[[Target]]
:语句的目标,是标签的字符串或者空
语句分类
普通语句(这里忽略var和函数声明的预处理机制)
不带控制能力
没有分支和重复执行的逻辑
执行后会得到
[[Type]]
为normal
的Completion Record
,JavaScript
引擎在遇到这样的Completion Record
,会继续执行下一条语句这些语句也会产生
[[Value]]
,从引擎控制的角度,这些值没有什么用
空语句
;
:语言设计完备性
with
语句
严格模式禁止使用
对象的属性在语句内部变成变量,容易造成语义不明
debugger
语句
- 通知调试器在此断点,没有调试器挂载时,不产生任何是效果复制代码
声明语句
var
语句作用域是函数执行的作用域
会穿透
if
、for
在没有
let
的时候,使用立即执行函数(时代的眼泪)在大多数情况下,用
let
和const
是比var
更好的选择let
语句块级作用域
for
、if
、try/catch
等语句内使用let
会产生块级作用域const
语句块级作用域
for
、if
等语句内使用class
语句class
关键字块级作用域
内部函数都是严格模式
函数声明语句
function
关键字
控制语句
if
语句switch
语句C中,Switch生成的额汇编代码性能略优于if else,但是在JavaScript中,没有本质区别
循环语句
return
语句break
语句和continue
语句try
语句和throw
语句
语句块
复合结构,可以嵌套
可以产生作用域
语句块的
[[Type]]
根据内部语句来决定
总结
通过对
JavaScript
语句的分类以及执行的类型的了解,可以更好的理解作用域
作者:chechebecomestrong
链接:https://juejin.cn/post/7018057886416764942