03 # 类型基础:动态类型与静态类型

简介: 03 # 类型基础:动态类型与静态类型

通俗定义

静态类型语言:在编译阶段确定所有变量的类型

  • 编译阶段确定属性偏移量
  • 用偏移量访问代替属性名访问
  • 偏移量信息共享


动态类型语言:在执行阶段确定所有变量的类型


  • 在程序运行时,动态计算属性偏移量
  • 需要额外的空间存储属性名
  • 所有对象的偏移量信息各存一份


所以动态类型语言无论在时间还是空间都有比较多的性能损耗。

静态类型与动态类型对比

image.png

动态类型语言的支持者认为:

  • 性能是可以改善的(V8引擎), 而语言的灵活性更重要
  • 隐藏的错误可以通过单元测试发现
  • 文档可以通过工具生成


其他定义

美国加州大学的讲义中对强类型语言的定义如下

强类型语言:不允许程序在发生错误后继续执行

按照上面的定义,C/C++就是弱类型语言,因为它们没有对数组越界进行检查,一旦发生错误,程序就会终止

争议: C/C++是强类型还是弱类型?

语言类型象限



目录
相关文章
|
7月前
|
JavaScript 前端开发 Java
02 # 类型基础:强类型与弱类型
02 # 类型基础:强类型与弱类型
60 0
|
3月前
|
存储 编译器 开发者
通过 cdef 进行静态类型声明
通过 cdef 进行静态类型声明
37 0
|
5月前
|
IDE JavaScript 开发工具
静态类型检查
静态类型检查
|
6月前
|
JavaScript 前端开发
TypeScript基础类型
TypeScript基础类型
|
JavaScript
TypeScript 具有可选的静态类型和基于类的面向对象编程,具体应用案例解析
TypeScript 具有可选的静态类型和基于类的面向对象编程,具体应用案例解析
77 0
|
存储 JavaScript 前端开发
TypeScript 基础类型
TypeScript 基础类型
52 0
|
存储 JavaScript 前端开发
TypeScript-基础类型
TypeScript-基础类型
33 0
TypeScript-枚举成员类型和联合类型
TypeScript-枚举成员类型和联合类型
62 0
typescript9-常用基础类型
typescript9-常用基础类型
92 0
typescript9-常用基础类型
|
存储 编译器 C语言
关于静态类型、动态类型、id、instancetype
在实际开发与学习中,特别常见的概念:静态类型、动态类型、id、instancetype。了解这些概念,存储在实际编码中非常有用。
242 0