项目中的菜单是由后台动态传来的,通过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 对代码进行检验的比较多,对等号规则也有了限制,推荐使用三个等号

本文是个人的理解,如有不妥,请赐教

Logo

前往低代码交流专区

更多推荐