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

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

通俗定义

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

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


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


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


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

静态类型与动态类型对比

image.png

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

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


其他定义

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

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

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

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

语言类型象限



目录
相关文章
|
1月前
|
JavaScript 前端开发 Java
02 # 类型基础:强类型与弱类型
02 # 类型基础:强类型与弱类型
31 0
|
15天前
|
JavaScript 前端开发 安全
TypeScript:静态类型的动态语言
【6月更文挑战第9天】TypeScript是JavaScript的静态类型超集,解决JS类型安全问题,提供更强的代码组织和维护。它引入静态类型、接口和类,增强类型安全,减少运行时错误。TS与JS无缝集成,兼容现有库和框架,拥有丰富的开发工具和活跃社区。广泛应用在各种规模项目中,尤其提升复杂前端应用的代码质量。学习TypeScript对提升开发效率和代码可靠性极具价值。
25 10
|
19天前
|
JavaScript 前端开发
TypeScript基础类型
TypeScript基础类型
|
8月前
|
JavaScript
TypeScript 具有可选的静态类型和基于类的面向对象编程,具体应用案例解析
TypeScript 具有可选的静态类型和基于类的面向对象编程,具体应用案例解析
50 0
|
8月前
|
存储 JavaScript 前端开发
TypeScript 基础类型
TypeScript 基础类型
34 0
|
8月前
|
存储 JavaScript 前端开发
TypeScript-基础类型
TypeScript-基础类型
21 0
|
JavaScript 前端开发
学习TypeScrip1(基础类型)
void 类型的用法,主要是用在我们不希望调用者关心函数返回值的情况下,比如通常的异步回调函数
64 0
学习TypeScrip1(基础类型)
typescript9-常用基础类型
typescript9-常用基础类型
75 0
typescript9-常用基础类型
|
存储 编译器 C语言
关于静态类型、动态类型、id、instancetype
在实际开发与学习中,特别常见的概念:静态类型、动态类型、id、instancetype。了解这些概念,存储在实际编码中非常有用。
208 0
|
JavaScript 前端开发 C#
系统学习 TypeScript(三)——基础类型
TypeScript 包含的基础类型总结起来有
101 0
系统学习 TypeScript(三)——基础类型