当前位置: 首页 > 面试题库 >

在JavaScript中,为什么“ 0”等于false,但是在通过“ if”进行测试时,其本身不是false?

凌波峻
2023-03-14
问题内容

下面显示"0"了Javascript中的false:

>>> "0" == false
true

>>> false == "0"
true

那么,为什么要打印以下内容"ha"

>>> if ("0") console.log("ha")
ha

问题答案:

原因是因为当您显式这样做时"0" == false,双方都将转换为数字, 然后 执行比较。

当您执行以下操作:时if ("0") console.log("ha"),正在测试字符串值。任何非空字符串为true,而空字符串为false

等于(==)如果两个操作数 的类型不同 ,则JavaScript会转换操作数,然后进行严格比较。如果操作数是 数字或布尔值,则如果可能,将操作数转换为数字;否则,操作数将转换为数字。否则,如果其中一个操作数是 字符串 ,则将另一个操作数转换为字符串(如果可能)。如果两个操作数都是html" target="_blank">对象,则JavaScript将比较内部引用,当操作数引用内存中的同一对象时,内部引用是相等的。



 类似资料:
  • 问题内容: 来自javascript类型的jQuery文档中的这段代码片段描述了转换为布尔值时字符串的行为(该主题与该问题无关,但这只是我找到代码的地方): 我得到了前三个示例,但没有得到最后一个示例,因为: 所以我假设: 但反而: 我什至不知道这是什么… 是因为: 如果是这样,这有什么目的? 问题答案: 返回一个不为null 的 对象 。非空对象始终是真实的。 结果,任何非null对象将始终为f

  • 问题内容: 在Python中(我仅使用Python 3.6进行过检查,但我相信它也适用于许多以前的版本): 但: 为什么两种方法的结果不同?相等运算符对元组的处理方式是否不同? 问题答案: 前两个表达式都解析为元组: (即),然后是 ,其次是(仍然如此)。 由于逗号分隔符相对于相等运算符具有较高的优先级,因此将表达式进行拆分:Python看到一个元组包含两个表达式,其中一个恰好是一个相等测试,而不

  • 背景: 我的一个本地单元测试调用了我正在测试的一个方法,该方法的逻辑依赖于“BuildConfig.DEBUG”是否为true。 问题: 我注意到,当我在Android Studio中使用绿色的play按钮BuildConfig运行单元测试时。调试按预期为“true”。这可能是因为我将构建变量设置为debug。 但是,当我使用诸如“/gradle test”之类的命令通过终端运行相同的测试时,它被

  • 为什么以下输出为True? 这将始终输出,即使条件似乎表明并非如此。如果我删除括号,那么它可以工作,但我不明白为什么。

  • 问题内容: 使用括号时,这些语句为什么能按预期工作: 但是 ,如果没有括号,它会返回吗? 问题答案: 基于有关操作符优先级的python 文档 : 请注意,比较,成员资格测试和身份测试均具有相同的优先级,并且具有“比较”部分中所述的从左到右的 链接 功能。 因此,实际上您有一个链接语句,如下所示: 您可以假定中心对象将在2个操作和其他对象之间共享(在这种情况下为False)。 并且请注意,对于所有

  • 问题内容: 为什么在Python中等于?它不应该像那样抛出异常吗? 问题答案: Wikipedia对历史进行了有趣的报道,并对以下内容的价值有不同的看法: 至少从19世纪初期开始,辩论一直在进行。当时,大多数数学家都同意,直到1821年,柯西(Cauchy)以及诸如未定义形式的表格之类的表达式才被列出。在1830年代,利比里(Libri)发表了令人信服的论点,莫比乌斯(Möbius)站在他身边。