! 逻辑非运算符的使用情况

1、可用的情况

检查值是否为假值:false、0、""、null、undefined 和 NaN 被视为假值。要检查一个变量是否为这些假值之一时,可以使用 !

let contractFormValue = "";
if (!contractFormValue) {
  console.log("contractFormValue 是假值");
}

条件判断中的前置检查:在某些操作之前,先检查某个变量是否处于无效或未初始化的状态。例如,在访问对象的属性或调用函数之前,确保相关的变量不是假值,以避免潜在的错误,可以使用!

if (!contractFormValue) {
  console.log("值无效,不进行处理");
} else {
  console.log(contractFormValue);
}

2、不可用的情况

需要精确判断特定值的情况:当需要精确判断 contractFormValue 是否等于某个特定的值,而不仅仅是判断真假时,不能仅使用 !contractFormValue。例如,需要判断 contractFormValue 是否等于 "abc",使用 contractFormValue === "abc" 这样的精确比较

变量可能为布尔值:如果 contractFormValue 本身就是一个布尔类型的变量,使用 !contractFormValue 会改变其原本的逻辑意义。例如,contractFormValue 表示某个操作是否成功(true 表示成功,false 表示失败),直接使用 !contractFormValue 会得到相反的判断结果

期望严格类型检查:!contractFormValue 会进行隐式类型转换来判断真假。如果你需要进行严格的类型检查(例如区分 0 和 ""),则不适合使用这种方式,而应该使用 === 或 !== 进行比较

let numValue = 0;
let strValue = "";
if (numValue === 0) {
  console.log("值是数字 0");
}
if (strValue === "") {
  console.log("值是空字符串");
}

 

posted @ 2025-04-16 16:45  k954  阅读(25)  评论(0)    收藏  举报