学习JavaScript的真假值然后理解!!运算符的使用

真值(truthy)和假值(falsy)

在 JavaScript 中,有一些值总是被认为是假值(falsy),其他的都被认为是真值(truthy)。以下是常见的假值:

  • false
  • 0(数字零)
  • ""(空字符串)
  • null
  • undefined
  • NaN(不是数字)

除了这些,其他值在布尔上下文中都被视为真值(truthy)。比如:

  • 非空字符串(如 "hello"
  • 非零数字(如 1-100
  • 对象(如 {} 或 []
  • 函数

!!运算符的工作原理

!! 运算符在 JavaScript 中其实是两个叹号 ! 的组合运算,用来将任意值转换为布尔值(true 或 false)。具体来说:

  1. 第一个 ! 运算符会将值转换为其相应的布尔值的否定值
  2. 第二个 ! 运算符再将这个否定值反转回来,变成该值的原始布尔值

也就是说,!! 运算符的实际作用是将一个任意类型的值转成布尔类型,同时根据它的“真值”或“假值”来返回 true 或 false

如何工作

让我们看看它的工作原理分成两步:

  • 第一步:!value
    • 这一步会把 value 转换为布尔值并取反。如果 value 是“真值”(truthy),则返回 false;如果 value 是“假值”(falsy),则返回 true
  • 第二步:!(!value)
    • 这一步再对上一步的结果取反。如果上一步是 false,那么这一步返回 true;如果上一步是 true,则这一步返回 false。最终的结果就是 value 的布尔表示。

!! 的常见用途

  • 将任意值转换为布尔值:在实际编码中,!! 常用于将一个未知的值转换为布尔值,以便我们能够明确知道它是 true 还是 false
  • var value = “Hello”; var isTruthy = !!value; // `isTruthy` 为 true
  • 验证对象是否存在:通常用于验证一个变量是否已定义或是否有值。
  • var user = getUser(); // 假设这个函数可能返回 null 或者 undefined
  • if (!!user) { // user 存在,可以使用 } else { // user 不存在,做一些默认操作 }
  • 简化条件判断:比如你需要将一个任意值强制转换成布尔类型,并确保值是 true 或 false,而不是其他可能的“真值”或“假值”。
  • var isValid = !!someValue; // 将 `someValue` 转换为 `true` 或 `false`

举例说明

解释

console.log(!!0); // false,因为 0 是假值

console.log(!!1); // true,因为非零数字是真值

console.log(!!""); // false,因为空字符串是假值

console.log(!!"hello"); // true,因为非空字符串是真值

console.log(!!null); // false,因为 null 是假值

console.log(!!undefined); // false,因为 undefined 是假值

console.log(!!{}); // true,因为对象是真值

console.log(!![]); // true,因为数组也是对象,因此是真值

console.log(!!NaN); // false,因为 NaN 是假值

console.log(!!function(){});// true,因为函数是对象,因此是真值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值