一文分清强弱、动态静态类型语言
上文提到前端为何需学习TypeScript,那么TypeScript属于什么类型语言呢?
看完本文你便能摸索出来
强弱类型语言
强类型语言:当一个对象从调用函数传递到被调用函数时,其类型必须与被调用函数中声明的类型兼容
A(){ B(x) } B(y){ //y可以被赋值x,程序运行良好 }
强类型语言:不允许改变变量的数据类型,除非进行强制类型转换
class C{ public static void main(String[] args){ int x = 1; bollean y = true; x = y //boolean cannot be converted to int } }
弱类型语言:变量可以被赋予不同的数据类型
let x = 1; let y = true; x = y //true
静动态类型语言
静态类型语言:在编译阶段确定所有变量的类型
动态类型语言:在执行阶段确定所有变量的类型
静态类型语言 | 动态类型语言 |
对类型极度严格 | 对类型非常宽松 |
立即发现错误 | Bug可能隐藏数月甚至数年 |
运行时性能好 | 运行时性能差 |
自文档化 | 可读性差 |
动态类型语言的支持者认为:
性能是可以改善的(V8引擎),而语言的灵活性更重要
隐藏的错误可以通过单元测试发现
文档可以通过工具生成
可以改善的(V8引擎),而语言的灵活性更重要
隐藏的错误可以通过单元测试发现
文档可以通过工具生成