Javascript 为什么';如果这句话能如预期的那样起作用,那不是吗?

Javascript 为什么';如果这句话能如预期的那样起作用,那不是吗?,javascript,Javascript,我今天遇到了这样的事情 我会提醒你(再见) 我以为是这样的(提醒大家再见): 我不知道它是如何工作的。您应该查找javascript的“truthy-falsy”属性。这是一个例子。在第一种情况下,x为真,因为它是一个非空且非未定义的对象,因此它是truthy。在第二种情况下,x是boolean类型的false,即falsy 文章中需要记住的一些事情: 以下值不正确: 假的 0(零) “”(空字符串) 空的 未定义 NaN(表示非数字的特殊数字值!) 其他一切都是真实的 如果您使用x的类型,

我今天遇到了这样的事情 我会提醒你(再见)

我以为是这样的(提醒大家再见):

我不知道它是如何工作的。

您应该查找javascript的“truthy-falsy”属性。这是一个例子。在第一种情况下,
x
为真,因为它是一个非空且非未定义的对象,因此它是truthy。在第二种情况下,
x
boolean
类型的
false
,即falsy

文章中需要记住的一些事情:

以下值不正确:

  • 假的
  • 0(零)
  • “”(空字符串)
  • 空的
  • 未定义
  • NaN(表示非数字的特殊数字值!)
其他一切都是真实的


如果您使用x的类型,您会意识到x是一个对象。对象总是正确的

大多数价值观 转换为true,但以下情况除外,这些情况会转换为false:

  • 空字符串“”
  • 空的
  • 未定义
  • 数字0
  • 号码是NaN
  • 布尔值为false
    • 这是的实例,而不是布尔基元

      javascript中的
      true
      false
      是布尔基元。当您将它们与布尔运算符一起使用时,它们的行为与您预期的一样。例如
      true | | false
      true
      true&&false
      false

      另一方面,
      Boolean
      是一个特殊函数,它可以将其他数据类型转换为Boolean(除其他外)。调用
      newboolean(false)
      时,您正在创建一个
      Boolean
      对象,其中包含布尔基元
      false
      。这是本案的关键区别

      总之,

      • if(new Boolean())
        使用javascript的真实值规则。它是一个不为null的对象,因此它是“true”
      • if(false)
        是一个布尔基元,实际检查真/假

      新布尔值(false)
      返回一个非空的对象。非空对象总是
      true


      欢迎使用JavaScript。
      x = new Boolean(false);
      
      if (x) {
        alert('hello');
      }else{
          alert('goodbye');
      }
      
      x = false;
      
      if (x) {
        alert('hello');
      }else{
          alert('goodbye');
      }