Javascript类型系统

强类型与弱类型

从类型安全的角度出发,编程语言分为强类型和弱类型:

  • 强类型:语言层面限制函数的实参类型必须与形参类型相同
  • 弱类型:语言层面不限制形参的类型

强类型有更强的类型约束,不允许有任意类型的隐式类型转换;而弱类型中几乎没有什么约束,允许任意的数据隐式类型转换。

变量类型允许随时改变的特点,不是强弱类型的差异。

静态类型与动态类型

从类型检查的角度出发,编程语言分为静态类型和动态类型:

  • 静态类型:一个变量声明时,它的类型就是明确的,并且变量声明后,它的类型就不允许再修改。
  • 动态类型:再运行阶段才能明确变量的类型,并且变量的类型随时可以改变,换句话说,动态类型语言中的变量没有类型,而变量中存放的值是有类型的。

常见语言分类

 JavaScript类型系统特征

由于早前的JavaScript应用简单,并且JavaScript是一门脚本语言,没有编译环节,所以JavaScript作为一门弱类型且动态类型的语言,缺失了类型系统的可靠性。

弱类型的问题

部分错误需等到运行时才报错,存在隐患

 

 在上面的代码中,定义了一个对象,然后调用对象中不存在的方法,由于弱类型的原因,上面的代码在语法上是可行的,并没有报错,而是等到了运行阶段才报错。

意料之外的结果

 在上面的代码中,函数sum被设计用来计算两数之和,由于类型的不确定性,在传入错误类型后,代码没有报错,并产生了意料之外的结果。

原文地址:https://www.cnblogs.com/yuyujuan/p/14893704.html