美文网首页大前端学习日记
强弱类型、动态类型与静态类型初探

强弱类型、动态类型与静态类型初探

作者: 桃之_夭夭_ | 来源:发表于2020-11-07 18:01 被阅读0次

一、强弱类型

类型安全:强类型、弱类型;1974年提出

强类型:语言层面限制实参类型必须与形参类型相同,不允许任意的隐式类型转换,语法阶段就会校验类型去报错

弱类型则与上述相反。弱类型是在运行阶段报错

变量类型允许随时改变不是强弱类型鉴定方式,python是强类型

二、动态类型与静态类型
动态类型:运行时才会确定变量类型,变量没有类型,变量的值才有类型

静态类型:变量类型确定后不可更改

弱类型是动态类型,强类型是静态类型说法是❌的

JS是弱类型和动态类型

为什么JS 不是强类型/静态类型?

1.早前应用简单,设置成强类型/静态类型反而复杂

2.JS是脚本语言,没有编译环节,静态类型语言需要在编译阶段做类型检查,对JS没有意义

弱类型问题:

1.代码隐患

const obj = ()
obj.foo() // 如果测试时没有测试到这一步会留下代码隐患;如果是强类型在语法阶段就会发现问题

2.类型不明确造成函数功能改变

function sum(a, b){

 return a+b

}

console.log(sum(10, 100))

console.log(sum(10, '100'))
// 弱类型传值类型不同导致结果不同,定义成强类型强制为数值类型避免

3.君子约定有隐患,强制要求有保障

const obj = []

obj[true] =100 // obj的key会自动转为字符串

console.log(obj['true']) 

强类型的优势:

1.错误更早暴露

2.代码更加智能,编码更准确

3.重构更牢靠,如删除对象中某成员,修改对象属性名(如果别地方用到了,无法定位到)

4.减少不必要的类型判断

function sun(a, b){
 // 如果是强类型则不需要下方的校验
 if(typeof a !=='number' || typeof b !== 'number'){
  throw '类型错误'
  }
}

相关文章

  • 强弱类型、动态类型与静态类型初探

    一、强弱类型 类型安全:强类型、弱类型;1974年提出 强类型:语言层面限制实参类型必须与形参类型相同,不允许任意...

  • OC中的id类型

    OC中的id类型 id类型 静态类型和动态类型 为什么要有动态类型? id数据类型与静态类型 1. 静态类型和动态...

  • OC中的id类型

    id类型 【理解】静态类型和动态类型 【理解】为什么要有动态类型? 【理解】id数据类型与静态类型 1.静态类型和...

  • TypeScript语言

    内容概要 :### 强类型和弱类型 静态类型与动态类型 javaScript 自由类型系统的问题 Flow 静态类...

  • typescript学习(1)

    静态类型的理解 VS 动态类型 typeScript的静态类型:声明的类型不能接受别的类型的数据 动态类型: 静态...

  • 01|JavaScript是一种动态的弱类型语言

    一、JavaScript与C++对比 javascript C++ 二、静态类型和动态类型对比 静态类型语言动态语...

  • TypeScript

    强类型与弱类型 强类型语言不允许随意的隐式类型转换 静态类型与动态类型 静态类型:一个变量声明时他的类型就是明确的...

  • 动态数据类型以及对象的初始化

    1.动态数据类型 动态数据类型与静态数据类型 静态类型将一个指针变量定义为特定类的对象时,使用的是静态类型,在编译...

  • 程序员撕逼术语

    弱类型vs强类型 动态类型vs静态类型

  • python面试题

    python语言特性 python是静态还是动态类型?是强类型还是弱类型? 动态强类型语言 动态还是静态指的是编译...

网友评论

    本文标题:强弱类型、动态类型与静态类型初探

    本文链接:https://www.haomeiwen.com/subject/celqbktx.html