美文网首页
JavaScript语言类型相关

JavaScript语言类型相关

作者: JuanitaLee | 来源:发表于2021-01-15 20:44 被阅读0次

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

强类型与弱类型

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

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中,我们需要用代码去做一些类型判断)

相关文章

网友评论

      本文标题:JavaScript语言类型相关

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