我不明白为什么只有第一个 if 语句正在运行
首先,我将当前级别属性设置为会话中的内容
public currentLevel:any;
this.currentLevel = JSON.parse(sessionStorage.getItem('level'));
此 if 语句运行,并且当前级别.lvl 设置为 null
if (!this.currentLevel) {
this.currentLevel = {lvl: null};
}
此 if 语句在第一次执行方法时不运行但是,它会在第二次执行时运行,然后整个方法按预期工作
if (this.currentLevel.lvl == null) {
sessionStorage.setItem('level', JSON.stringify({lvl: '1'}));
}
}
完整代码
setLevel(){
this.currentLevel = JSON.parse(sessionStorage.getItem('level'));
if (!this.currentLevel) {
this.currentLevel = {lvl: null};
}
if (this.currentLevel.lvl == null) {
sessionStorage.setItem('level', JSON.stringify({lvl: '1'}));
}else if(this.currentLevel.lvl == '1'){
sessionStorage.setItem('level', JSON.stringify({lvl: '2'}));
}else if(this.currentLevel.lvl == '2'){
sessionStorage.setItem('level', JSON.stringify({lvl: '3'}));
}else if(this.currentLevel.lvl == '3'){
sessionStorage.setItem('level', JSON.stringify({lvl: '4'}));
}else if (this.currentLevel.lvl == '4') {
sessionStorage.setItem('level', JSON.stringify({lvl: 'complete'}));
}
// console.log(this.currentLevel.lvl);
}
1( 不要使用 ==,始终使用 === 来执行逻辑和类型检查。
2( 设置sessionStorage
后,您没有从currentLevel
设置值
setLevel(){
this.currentLevel = JSON.parse(sessionStorage.getItem('level'));
if (!this.currentLevel) {
this.currentLevel = {lvl: null};
}
if (this.currentLevel.lvl === null) {
sessionStorage.setItem('level', JSON.stringify({lvl: '1'}));
}else if(this.currentLevel.lvl === '1'){
sessionStorage.setItem('level', JSON.stringify({lvl: '2'}));
}else if(this.currentLevel.lvl === '2'){
sessionStorage.setItem('level', JSON.stringify({lvl: '3'}));
}else if(this.currentLevel.lvl === '3'){
sessionStorage.setItem('level', JSON.stringify({lvl: '4'}));
}else if (this.currentLevel.lvl === '4') {
sessionStorage.setItem('level', JSON.stringify({lvl: 'complete'}));
}
this.currentLevel = JSON.parse(sessionStorage.getItem('level'));
//
//should log {lvl: null} at the first time when It ran
//
console.log(this.currentLevel.lvl);
}