程序员

强类型与弱类型

2021-01-11  本文已影响0人  翔子丶
强类型与弱类型(类型安全角度)

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

弱类型:不会限制实参必须与形参类型相同

function sum (a, b) {
  return a + b
}

console.log(sum(100, 100)) // 200
console.log(sum(100, '100')) // 100100

强类型不允许任意形式的类型转换,而弱类型语言则允许任意的数据隐式类型转换

静态类型与动态类型(类型检查角度)

静态类型:变量声明时它的类型就是明确的,声明过后就不能在修改

动态类型:只有在运行阶段才能明确变量类型,变量类型可以随时更改

弱类型的问题

JavaScript是弱类型且动态类型,所以没有任何类型限制,但缺失了类型系统的可靠性

  1. 必须等到运行阶段才能发现异常

    const obj = {}
    
    // obj.foo()
    
  2. 函数功能可能发生改变

    function sum (a, b) {
      return a + b
    }
    
    console.log(sum(100, 100))
    console.log(sum(100, '100'))
    
  3. 对象索引器的错误用法

    const obj = {}
    obj[true] = 100 // 属性名会自动转换为字符串
    console.log(obj['true'])
    
强类型的优势
  1. 错误更早暴露
  2. 代码更智能,编码更准确
  3. 重构更牢靠
  4. 减少代码层面不必要的类型判断
上一篇 下一篇

猜你喜欢

热点阅读