Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JS是动态类型的解释型语言 #71

Open
wuyanqian0503 opened this issue Aug 18, 2021 · 0 comments
Open

JS是动态类型的解释型语言 #71

wuyanqian0503 opened this issue Aug 18, 2021 · 0 comments

Comments

@wuyanqian0503
Copy link
Owner

JS是动态类型语言

简单来说就是JS 中的同一个变量可以用作不同类型。
又由于这种松散的特性,所以在运行过程中可能因为类型导致代码运行错误

JS是解释型语言

和解释型语言相对的是编译型语言。

编译型语言在执行代码前,需要将高级语言编写的代码编译成机器语言后,才被计算机所执行。
而解释型语言则是一边执行一边编译成计算机语言。

JS就是解释型语言。

  • 优点:可移植性好,只要系统有JS解释器就可以执行,不需要额外的系统库支持
  • 缺点:执行速度慢,相比起直接执行,还多了编译过程

JS语句的执行过程

  1. V8殷勤在执行一段可执行代码时,首先将代码进行词法分析或者分词,生成token
  2. 当进行完词法分析后,会根据token生成抽象语法树AST
  3. 当遇到声明语句时,将为变量声明内存空间并设置默认值undefined,并绑定给当前执行上下文的变量对象,最后将变量对象压入作用域链顶端
  4. 执行代码时当需要赋值时,引擎首先通过当前作用域scope进行查找,如果没有找到则继续沿着作用域链向上查找
  5. 接下来将会生成计算机可识别的机器码
  6. 代码执行完成
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant