请教下三元运算的语法规则

  checkCookieExpires (time) {
    if (time.length === 10) {
      return time * 1000 < Date.now() ? false : true 
    } else if (time.length === 13) {
      return time < Date.now() ? false : true 
    }
    return;
  }
  

eslint 报这个错:Unnecessary use of boolean literals in conditional expression

阅读 6.8k
5 个回答
  checkCookieExpires (time) {
    if (time.length === 10) {
      return time * 1000 >= Date.now()
    } else if (time.length === 13) {
      return time >= Date.now()
    }
    return false
  }
  

在这里使用三元运算符实在是多余以致于Eslint将其视为一个错误,比较合理的使用方式是。

isMan = true;
...
console.log(isMan? "Male" : "Female");

不算是个错误吧,只是没有必要这样写。 return time >= Date.now()就能达到目的

不是语法规则的事

time * 1000 < Date.now()
time < Date.now()

这两句就是一个值了,为什么还要用三目运算符再算一遍呢
就好像是

if(true){
    return true
}else{
    return false
}

不需要多这一步

新手上路,请多包涵

比较运算符的计算结果已经是布尔值。
在javascript中属于假值的有 false null undefined 0 -0 NaN "",除此之外都是真值,而且javascript在需要布尔值的时候能自动转换成布尔值。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题