类型检查
静态类型
一个变量声明时其类型就是明确的,而且声明过后其类型不能发生变化
需要在编译阶段做类型检查
###动态类型
变量的类型在运行时才会明确,而且变量的类型随时可以改变
类型安全
强类型
- 在语言层面函数的实参类型必须和形参类型完全相同
- 不允许任意隐式类型转换
弱类型
- 在语言层面不会限制实参类型
- 允许任意隐式类型转换
JavaScript
动态的弱类型语言。没有编译环节(动态类型语言,不需要在编译阶段进行类型检查)
弱类型#问题
- 弱类型的异常问题需要等到运行时才能够被发现
- 类型不明确导致函数功能出现问题
- 多人开发,君子约定存在隐患
强类型#优势
- 问题更早暴露(编译阶段)
- 代码更智能,编码更准确(强类型智能提示)
- 重构更牢靠
- 减少代码层面不必要的类型判断