Javascirpt是一种弱类型、动态类型的语言

一. 从编程语言的分类来看Javascript

1. 该语言是否允许随意的隐式类型转换?

    允许随意的隐式类型转换:弱类型(Javascript)
    不允许随意的隐式类型转换:强类型

2. 该语言是否允许随意地修改变量的类型?

    允许随意地修改变量类型:动态类型(Javascript)
    不允许随意地修改变量类型:静态类型

    动态类型的语言,直到运行阶段才能确定变量的类型,变量的类型还可以随时发生变化。
   

3. Javascript是一门弱类型、动态类型的语言

原因:早前的Javascript应用十分简单 且 Javascript语言不经编译直接执行故没有类型检查的时机

4. Javascript语言的问题(弱类型语言的问题)

const obj = {}
// 有些代码只有等到执行时才会报错
obj.foo() 

function sum(a, b){
    return a + b
}
console.log(sum(100, 100))   // 200
// 对函数的调用方式可能错误
console.log(sum(100, '100')) // 100100

// 若对对象的键值只能是字符串这点不了解,可能产生疑惑
const obj = {}
obj[true] = 20
console.log(obj['true']) // 20

5. 强类型语言的优势

错误可以更早暴露
代码更智能,编码更准确
重构更牢靠
减少不必要的类型判断

综上,这就是一些试图把Javascirpt语言升级为强类型语言的原因,比如 TypeScript、Flow(一个 JavaScript 静态类型检测器) 出现的原因。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值