现在有三个 组件 ,A组件,B组件,C组件
当我从A组件跳转到B组件的时候,B组件写
beforeCreate(){
let status=this.$route.query.status;
switch (status){
case 1: document.title="生产监管火电明细"
break;
case 2: document.title="在线经营火电明细"
break;
case 3: document.title="生产监管水电明细";
break;
default:
console.log(status == 1);
document.title="我是没有执行";
break;
}
},
浏览器的名字会变,但是我从B组件跳转到C组件的时候,在由C组件跳转到B组件的时候浏览器的名字变为了 - - (因为B组件的title的名字是动态的,所以我把初始值变为 --)
所以现在的 switch 里面的等于1 的没有执行, 我在default里面打印的也返回true
为什么不执行呢?
我改为if语句就可以了,但是switch 里面 case等于1 为什么不执行呢?
beforeCreate(){
//改变浏览器title名字
let status=this.$route.query.status;
if(status == 1){
document.title="生产监管火电明细"
}else if(status == 2){
document.title="在线经营火电明细"
}else if(status == 3){
document.title="生产监管水电明细"
}
},
这个问题我很好奇到底是什么原因导致的,
因为你的
statsu
的值为字符串"1"
,case
里面写的却是数字1
,case
使用===
做的严格比较.if
语句则使用==
做非严格比较, 会自动转换类型.要么把
case
里面的数字全写成字符串, 要么let status = parseInt(this.$route.query.status, 10);
把status
转成整型.