项目中的菜单是由后台动态传来的,通过ID来进行路由的跳转的,
但是发现通过(this.$route.query.id)获取 ID 进行判断页面时,有时获取到的是字符串、有时候是数字,
原因:
字符串:当已经处在某个有ID的路由页面时,当点击刷新,此时在获取 ID 时,ID 是从URL 字符串中获取的参数,获取到的也是字符串类型的值
数字:当点击菜单切换路由时,此时传过去的 ID 是Number 类型的,所以就会获取到数字类型的值
解决办法:
1:将获取到的值 强制类型转换为 Number,或者强制类型转换为 string
2:判断时通过 ‘ 或 ’ || 连接两个类型
eg:
if (this.$route.query.id === 555 || this.$route.query.id === '555') {
此时无论是数字或者字符串,都可以进入到次函数中
}
有人会问,为什么不直接用 ‘==’ 来判断呢,
原因:
1:三个等号比较严谨,不仅对值进行判断,还对类型进行了判断
2:目前使用 esLint 对代码进行检验的比较多,对等号规则也有了限制,推荐使用三个等号
本文是个人的理解,如有不妥,请赐教