动态类型语言与静态类型

动态类型语言(Dynamic Typing)和静态类型语言(Static Typing)是编程语言的两种不同类型系统。它们影响了如何在代码中处理和分配数据类型。

  1. 动态类型语言(Dynamic Typing):

    • 在动态类型语言中,变量的数据类型是在运行时确定的,而不是在编译时确定的。
    • 变量可以在不同时间引用不同的数据类型,因为数据类型的检查发生在运行时。
    • 动态类型语言的代表包括Python、JavaScript、Ruby等
  2. 静态类型语言(Static Typing):

    • 在静态类型语言中,变量的数据类型必须在编译时明确定义,且在变量声明时就要指定数据类型。
    • 一旦变量的数据类型确定,就不能更改为其他类型。
    • 静态类型语言通常会在编译阶段执行严格的类型检查,以捕获潜在的类型错误。
    • 静态类型语言的代表包括Java、C、C++、C#等

比较动态类型语言和静态类型语言的优劣点:

动态类型语言的优点:

  • 灵活性:变量的数据类型可以在运行时改变,使开发人员能够快速适应不同的情况。
  • 编码速度:因为不需要声明数据类型,通常编写代码更快。

动态类型语言的缺点:

  • 难以调试:类型错误通常在运行时才能被捕获,可能导致难以排查的错误,并且过于灵活是很容易就写出非常隐蔽的隐患代码,在编译期甚⾄看上去都不会报错,但在运行阶段就可能出现各种奇怪的 bug。
  • 性能问题:运行时类型检查可能导致性能下降。
  • 类型检查:这是当前动态类型语言的发展趋势,可以帮助我们在编译期尽早发现(由类型错误引起的) bug,有不影响代码运行(不需要运⾏时动态检查类型),使编写 JavaScript 具有和编写 Java 等 强类型语⾔相近的体验
  • 项目维护:项目越复杂就越需要通过⼯具来保证项目的维护性和增强代码的可读性。 Vue.js 在做 2.0 重 构的时候(Vue3.0是⽤TS重构),在 ES2015 的基础上,除了 ESLint 保证代码⻛格之外,也引⼊了 Flow 做静态类型检 查。之所以选择 Flow,主要是因为 Babel 和 ESLint 都有对应的 Flow 插件以支持语法,可以完全 沿用现有的构建配置,⼩成本的改动就可以拥有静态类型检查的能力。

静态类型语言的优点:

  • 更早的错误检查:在编译阶段捕获类型错误,有助于减少运行时错误。
  • 更好的性能:由于编译器可以进行更多的优化,通常具有更高的性能。

静态类型语言的缺点:

  • 冗长:需要显式声明数据类型,可能导致代码更冗长。
  • 开发速度较慢:编写代码可能需要更多的时间。

每种类型系统有其适用的场景,选择使用哪种类型取决于项目需求和开发团队的偏好。一些语言也提供了混合动态和静态类型的选项,以便在需要时结合两者的优点。

JavaScript作为动态类型,在vue.js 2 源码里对js用了Flow做静态类型检查。
 

以上是学习记录

你可能感兴趣的:(vue学习,前端)