JavaScript与Flow

本文探讨了JavaScript作为弱动态类型语言存在的问题,强调了强类型语言的优势。Flow作为一个JavaScript的静态类型检查器,通过类型注解帮助开发者在早期发现代码异常,降低了运行时错误的可能性。Flow的特性包括快速上手、编译时移除注解、自动推断、类型注解和数据类型等,是前端开发者提高代码质量和可维护性的有力工具。
摘要由CSDN通过智能技术生成

在前端快速发展的今天,如果不能时刻保持学习就会很快被淘汰。分享一下对JavaScript类型系统与Flow 相关知识的学习,希望对大家有所帮助。每天进步一点点。

一、编程语言的分类

1、从类型安全角度可以把编程语言分为强类型和弱类型。

​ 强类型语言在语言层面就限制了函数的实参类型必须与形参类型相同,并且不允许任意的数据隐式类型转换;弱类型语言不会限制实参的类型,并且允许任意的数据隐式类型转换

2、从类型检查(类型系统)角度可以把语言分为静态类型和动态类型

​ 对于静态类型语言而言,一个变量在声明时它的类型就是明确的,并且声明过后,变量类型不可修改;动态类型语言在运行阶段才能够明确变量的类型,而且变量的类型随时可以变化【变量是没有类型的,变量中存放的值是有类型的】

二、JavaScript存在的问题

​ JavaScript语言属于弱类型而且是动态类型的语言,可以说JavaScript几乎没有任何类型的限制,所以这就丢失掉了类型系统的可靠性。在编写程序时,我们需要担心每一个变量到底是不是我们想要的类型。

​ JavaScript语言存在这种问题是因为,在早前的JavaScript应用简单,只需要几百行代码,甚至是几十行就搞定了,在这种情况下类型系统限制就显得很多余很麻烦。

1、弱类型的问题

// 1.一些异常要等到运行阶段才能发现
const foo = {}
foo.fn()	// Uncaught (in promise) TypeError: foo.fn is not a function
// 如果在测试中没有测试到这种非立即执行代码,就会出现安全隐患
setTimeout(() => {
	foo.fn()
}, 100000)
// 2.类型不明确可能造成函数功能发生改变
function addFun (a, b) {
	return a + b
}
// 如果按照约定传入数值,得到正确的结果
console.log(addFun(100, 100))	// 200
// 传入非数字得到的结果就会异常
console.log(addFun(100, '100'))	// 100100
// 3.对对象索引器的错误用法
con
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值