如果语句未运行,但满足条件



我不明白为什么只有第一个 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); 
}

相关内容

  • 没有找到相关文章

最新更新