Javascript:使用带有比较运算符的逻辑运算符

时间:2015-09-18 11:38:15

标签: javascript conditional logical-operators comparison-operators

我试图了解如何在我的代码中使用逻辑运算符并尽可能高效。

假设我有这个变量:

var key = localStorage.getItem('keyName');

这是我的条件:

if (key !== null && key !== '' && key !== ' ') { // localStorage key exists and is not empty or a single space
  // Do something with key
}

有没有办法更有效地写它?我尝试了这个,但它不起作用:

if (key !== null && '' && ' ') {
  // Do something with key
}

5 个答案:

答案 0 :(得分:1)

if( value ) {
}
如果值不是,

将评估为true:

  • 未定义
  • 的NaN
  • 空字符串(“”)
  • 0

所以key !== null && key !== ''可以替换为key

我们可以使用/\S/.test(key)来测试只是空格(1或更多)的字符串

那怎么样?

if (key && /\S/.test(key) ){

}

或者

if (key && key.trim()){

}

答案 1 :(得分:0)

您可以简单地使用:

if(key) {
   // to do here
}

照顾空白:

if(key && key.replace(/\s/g,'')) {
   //
}

答案 2 :(得分:0)

您可以使用trim() method从字符串中删除任何前导或尾随空白字符。您在第二个代码示例中没有简写符号。

if (key !== null && key.trim() !== '')
  // Do something with key
}

答案 3 :(得分:0)

if(!~[null, '', ' '].indexOf(key))

if(!~[null, ''].indexOf(key.trim()))

说明:

indexOf return int> = 0。 Int> = 0表示找到该元素。除了0之外,所有结果都将评估为真,即~(反转/否定结果并减去1)非常方便。

休息是不言自明的,如果需要进一步说明,请告诉我。

答案 4 :(得分:0)

尝试:

if (key && key.trim())

如果key为null,则第一次检查失败,如果key只是空格,则第二次检查失败。如果任一检查失败,整件事就会失败。