如果满足条件,则语句不会运行

时间:2017-05-24 21:03:01

标签: typescript ionic2

我不明白为什么只有第一个if语句正在运行

首先,我将currentLevel属性设置为会话中的内容

public currentLevel:any;

this.currentLevel = JSON.parse(sessionStorage.getItem('level'));

此if语句运行且currentLevel.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 个答案:

答案 0 :(得分:1)

1)不要使用==,总是使用===来执行逻辑和类型检查。

2)设置currentLevel

后,您未设置sessionStorage的值
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); 
}