强类型与弱类型
类型安全维度区分语言类型
强类型更有类型上的约束,弱类型中几乎没有类型约束。
强类型语言中不允许有任意的隐式类型转换,弱类型语言允许数据的隐式类型转换。
强类型
语言层面限制函数的实参类型必须与形参类型相同
1 | class Main{ |
弱类型
语言层面不会限制参数类型
1 | function foo(num){ |
静态类型与动态类型
类型检查的角度区分类型系统,分为静态类型语言和动态类型语言。
静态类型
一个变量声明时,其类型就是确定的,在后续代码中,不允许进行类型修改
动态类型
在运行阶段才能够明确变量类型,并且变量的类型随时可以发生变化。
在动态类型中,其变量是没有类型的,而变量中存放的值时有类型的。