浅谈编程语言类型的强类型,弱类型,动态类型,静态类型

在介绍javascript类型系统之前,我们来解释两组区分不同编程语言时,提及的名词分别为强类型弱类型,静态类型动态类型

分别从类型安全和类型检查区分了强弱类型静动类型

 

一.通过类型安全区分 分为强类型和弱类型

强类型:语言层面限制了实参类型和形参类型必须相同,如果传入其他类型的值会报错,只有在传入之前转化为响应的类型,才可以

传入如下图所示:

 

弱类型:完全相反,弱类型语言层面不会限制实参的类型,即便是整型的数字,传入字符串类型语法上也是没问题的,如下图所示:

综上所述:强类型不允许有任意的隐式类型转换,而弱类型允许有任意的隐式类型转换,比如javascript为弱类型语言,会把隐式转

化为任意类型,调用的时候语法层面都不会报错如下图所示:

比如Python为强类型语言,则不会转换类型,调用时候语言层面就会报错如下图所示:

2.通过类型检查区分 动态类型和静态类型

静态类型:一个变量声明时类型就是明确的 声明过后,它的类型就不允许修改

动态类型:运行阶段才能够明确变量的类型 而且变量的类型随时可以变化 如下图所示:

动态类型语言中的变量没有类型,变量中存放的值是有类型的.

二.JavaScript的类型特征

javaScript是一门弱类型的动态类型的编程语言,javaScript是一门脚本语言,没有编译环节,直接到运行环境运行,没有类型检查

1.JavaScript语言弱类型的问题

如下图所示,obj是一个空对象,没有foo方法,立即去执行,可以提示代码异常,但如果不是立即执行,则不会立即报错,也就是说如果测试
没有测到这行代码,则把隐患留在了代码当中,如果是强类型的语言,在这里语法上就会报错,而不用去执行这行代码

如下图所示,sum里面的参数,从代码中可以看出,期望的应该是两个数字类型相加,如果说换成一个字符串,一个数字,则会打印出两个字符拼
接这是因为类型不确定导致的.如果是强类型语言,在语法上就行不通.

三.强类型语言的优势(以javascript作反面条件)

1.错误更早暴露,在上文中已经多次提到,在此不再重复。

2.代码智能提示,代码更准确,比如下图所示,element类型不确定,编辑器的智能提示也不知道要提示什么

3.重构更牢靠 比如下图中这段代码,这个util方法在多处使用,现在要把aaa方法换个名字,弱类型语言只有代码运行到那块才会提示

而强类型语言会直接提示,有可能造成安全隐患,比如某个地方没有修改。

 

4.减少不必要的类型判断,如下图所示保证a和b是number类型的话,只能加判断条件,才能保证,强类型语言不用加类型判断

给TA买糖
共{{data.count}}人
人已赞赏
经验教程

win10x64 批处理自动安装打印机

2020-11-5 23:29:24

经验教程

你知道 react-color 的实现原理吗

2021-1-10 20:12:47

⚠️
免责声明:根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。 本站为个人博客非盈利性站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途,网站会员捐赠是您喜欢本站而产生的赞助支持行为,仅为维持服务器的开支与维护,全凭自愿无任何强求。本站部份代码及教程来源于互联网,仅供网友学习交流,若您喜欢本文可附上原文链接随意转载。
无意侵害您的权益,请发送邮件至 momeis6@qq.com 或点击右侧 私信:momeis 反馈,我们将尽快处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索