阅读 54

你可能需要知道的前端小知识——JavaScript语句执行

  • 回顾:

    • JavaScript函数的执行

    • JavaScript的执行

JavaScript语句执行的基本类型

Completion Record

  • [[Type]]:完成的类型,包括normalbreakcontinuereturnthrow

  • [[Value]]:语句产生的返回值,取值为基础类型值或者空

  • [[Target]]:语句的目标,是标签的字符串或者空

语句分类

普通语句(这里忽略var和函数声明的预处理机制)

  • 不带控制能力

  • 没有分支和重复执行的逻辑

  • 执行后会得到[[Type]]normalCompletion RecordJavaScript引擎在遇到这样的Completion Record,会继续执行下一条语句

  • 这些语句也会产生[[Value]],从引擎控制的角度,这些值没有什么用

空语句
  • :语言设计完备性

with语句
  • 严格模式禁止使用

  • 对象的属性在语句内部变成变量,容易造成语义不明

debugger语句
- 通知调试器在此断点,没有调试器挂载时,不产生任何是效果复制代码
声明语句
  • var语句

    • 作用域是函数执行的作用域

    • 会穿透iffor

    • 在没有let的时候,使用立即执行函数(时代的眼泪)

    • 在大多数情况下,用letconst是比var更好的选择

  • let语句

    • 块级作用域

    • foriftry/catch等语句内使用let会产生块级作用域

  • const语句

    • 块级作用域

    • forif等语句内使用

  • class语句

    • class关键字

    • 块级作用域

    • 内部函数都是严格模式

  • 函数声明语句

    • function关键字

控制语句

  • if语句

  • switch语句

    • C中,Switch生成的额汇编代码性能略优于if else,但是在JavaScript中,没有本质区别

  • 循环语句

  • return语句

  • break语句和continue语句

  • try语句和throw语句

语句块

  • 复合结构,可以嵌套

  • 可以产生作用域

  • 语句块的[[Type]]根据内部语句来决定

总结

  • 通过对JavaScript语句的分类以及执行的类型的了解,可以更好的理解作用域


作者:chechebecomestrong
链接:https://juejin.cn/post/7018057886416764942

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐