JavaScript语言类型相关

从类型安全角度来比较,可以分为以下:

强类型与弱类型

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

javascript中允许隐式转换

>'100' - 50
50
>Math.floor(true)
1

从类型检查角度来比较,可以分为以下:

静态类型与动态类型

静态类型:一个变量声明时,类型就是明确的,并且声明过后、类型不允许再修改
动态类型:在运行阶段,才能明确变量的类型,在运行过程中类型也会发生变化

JavaScript类型系统特征

Javascript是弱类型 且 动态类型,缺失了类型系统的可靠性
以前应用比较小,JavaScript也没有编译环节,所以它成为一个弱类型/动态类型的语言,这也并没有什么问题。设置可以说,这也是javascript的一种优势。

但是现在和以前完全不同了,都是一些非常复杂的应用,开发周期也越来越长。在这种情况下,之前JavaScript的优势(弱类型、动态类型)就变成了短板。

弱类型产生的问题:

// 在语法层面这样写没有问题
// 必须等到运行的时候才发现问题
const obj = {}
obj.foo()
// 假如这行代码不是立即执行,而是过一段时间,获取在其他的方法中。
// 测试如果没有执行到这个方法就不会报错
// 这样就留下了隐患
setTimeout(() => {
    obj.for()
}, 10000000)

------------------------------------------------------------------------

// 参数类型不明确,函数功能发生变化
function sum(a, b) {
    return a + b
}
console.log(sum(100, 100))
// => 200
console.log(sum(100, '100'))
// => 100100

------------------------------------------------------------------------
// 对对象错误用法
const obj = {}
obj[true] = 100
// 对象内部会将属性名转换为字符串
console.log(obj['true'])
// => 100

强类型的优势

1.错误更早暴露,可以在编码阶段提前暴露异常
2.代码更智能,编码更准确。(编辑器时时刻刻都知道变量是什么类型)
3.重构更牢靠
4.减少不必要的类型判断(在javasript中,我们需要用代码去做一些类型判断)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容