逻辑运算符只有在它们都为非空或非空字符串时才为假

Logical operators to only be false when both of them are non-null or non-empty string

我希望逻辑运算符仅在满足以下条件时才为真:

  1. A 或 B 有 null 或有一个空字符串,这意味着它们中至少有一个会有一些东西,即 !((A === null) || (A === '')) || !((B === null) || (B === ''))
  2. A 和 B 均为 null 或具有空字符串

基本上,我唯一希望条件为假的情况是 A 和 B 同时具有非空或非空字符串。

如果 A 和 B 为 null、undefined、0 和 ''(empty),则以下条件有效。

if(!A || !B || A==='' || B===''){}

只需检查值并使用逻辑或链接条件。

const check = (a, b) => a === null || a === '' || b === null || b === '';

//        the above is the same as this, like the text requests
//        (a === null || a === '') !== (b === null || b === '') ||
//        (a === null || a === '') && (b === null || b === '');
    

console.log([
    [null, null], //  true
    [null, ''],   //  true
    ['', null],   //  true
    ['', ''],     //  true
    [1, 1],       // false
    [null, 1],    //  true
    [1, null]     //  true
].map(a => check(...a)));

这样的事情怎么样?

let test = (a,b) => {
  return !(a != null && b != null) || !( a != '' && b != '')
}

console.log(test(null, null))
console.log(test('', ''))
console.log(test('a','b'))
console.log(test(null,'b'))

分配空值或""

之一时可以简化

let test = (a = "", b = "") => {
  if(a === null) a = ""
  if(b === null) b = ""
  return !( a != '' && b != '')
}

console.log(test(null, null))
console.log(test('', ''))
console.log(test('a','b'))
console.log(test(null,'b'))