(新手误区)在 JavaScript 中,`!root`不等于`root !== null`!

在初学一门语言时,我们容易对类型掌握得不够清晰。比如在做二叉树相关题目时,当需要判断根节点是否为空,新手总是不清楚判断语句括号中应当选择 !root 还是 root !== null ,造成困扰。
所以,今天我们就来聊聊 !rootroot !== null 之间的区别。

1. 逻辑含义不同

  • !root:这是对 root 进行逻辑非运算。逻辑非运算会先将 root 转换为布尔值,然后取反。在 JavaScript 中,有 6 个值被视为“假值”,分别是 false0''(空字符串)、nullundefinedNaN,对这些值进行逻辑非运算会得到 true;而对于其他值,逻辑非运算会得到 false
  • root !== null:这是一个严格不等比较,它只检查 root 是否不等于 null。也就是说,只有当 root 的值恰好为 null 时,表达式结果为 false;其他任何值,包括 undefined0'' 等,表达式结果都为 true

2. 示例代码及结果分析

// 1. 当 root 为 null 时
let root = null;
console.log(!root); // 输出: true,因为 null 是假值,取反后为 true
console.log(root !== null); // 输出: false,因为 root 等于 null

// 2. 当 root 为 undefined 时
root = undefined;
console.log(!root); // 输出: true,因为 undefined 是假值,取反后为 true
console.log(root !== null); // 输出: true,因为 root 不等于 null

// 3. 当 root 为 0 时
root = 0;
console.log(!root); // 输出: true,因为 0 是假值,取反后为 true
console.log(root !== null); // 输出: true,因为 root 不等于 null

// 4. 当 root 为非假值时
root = 1;
console.log(!root); // 输出: false,因为 1 是真值,取反后为 false
console.log(root !== null); // 输出: true,因为 root 不等于 null

3. 在代码中的应用场景区别

  • !root:当你只关心 root 是否为“假值”,只需要判断一个变量是否有有效的值,而不关心具体是什么类型的假值时,可以使用 !root
  • root !== null:当你明确需要判断 root 是否不等于 null 时,就应该使用 root !== null。比如在处理二叉树节点时,通常需要明确区分节点是 null 还是其他值,这时使用 root !== null 更为合适。

综上所述,!rootroot !== null 在逻辑和应用场景上有明显的区别,使用时需要根据具体需求来选择合适的表达式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值