”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 为什么 JavaScript 中的“0”在比较中为 False,而在“if”语句中为 True?

为什么 JavaScript 中的“0”在比较中为 False,而在“if”语句中为 True?

发布于2024-11-07
浏览:531

Why Does

揭开 JavaScript 的悖论:为什么“0”在比较中为假,但在 If 语句中为假

在 JavaScript 中,原语 " 的行为0”给开发者带来了困惑。虽然诸如“==”之类的逻辑运算符将“0”等同于假,但“0”在“if”条件下表现为真。

比较悖论

代码下面演示了比较悖论:

"0" == false // true
false == "0" // true

在这种情况下,JavaScript 根据其“true”和“falsy”值将“0”强制为 false。像“0”、“NaN”、“null”和 undefined 这样的值被认为是假值,而其他值则被认为是真值。

If 语句异常

但是,情况当“if”语句中使用“0”时,会变得令人费解:

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

尽管被强制与 false 进行比较时,“0”在“if”条件下计算结果为 true。这是因为 JavaScript 中的“if”语句将所有非空字符串(包括“0”)视为真实。

真实性表

为了理解这种行为,我们可以参考JavaScript真值表。他们根据比较 (==) 和“if”语句(真实)条件中的真值/假值状态对值进行分类:

比较If 语句
True/Truthytruetrue
假/假
"0"(假)true

结论

JavaScript中“0”的悖论源于对比较真实性的不同解释(= =) 和“if”语句(真实)。这是一个微妙但至关重要的区别,开发人员应该意识到这一点,以避免出现意外的结果。作为最佳实践,建议在比较期间使用严格相等 (===) 以确保精确评估。

最新教程 更多>
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案:的,请访问量很大,并应为procectiquiestate的,并在整个代码上正确格式不多: java.text.simpledateformat; 导入java.util.calendar; 导入java...
    编程 发布于2025-04-21
  • 如何在Java的全屏独家模式下处理用户输入?
    如何在Java的全屏独家模式下处理用户输入?
    Handling User Input in Full Screen Exclusive Mode in JavaIntroductionWhen running a Java application in full screen exclusive mode, the usual event ha...
    编程 发布于2025-04-21
  • 如何干净地删除匿名JavaScript事件处理程序?
    如何干净地删除匿名JavaScript事件处理程序?
    删除匿名事件侦听器将匿名事件侦听器添加到元素中会提供灵活性和简单性,但是当要删除它们时,可以构成挑战,而无需替换元素本身就可以替换一个问题。 element? element.addeventlistener(event,function(){/在这里工作/},false); 要解决此问题,请考虑...
    编程 发布于2025-04-21
  • Async Void vs. Async Task在ASP.NET中:为什么Async Void方法有时会抛出异常?
    Async Void vs. Async Task在ASP.NET中:为什么Async Void方法有时会抛出异常?
    在ASP.NET async void void async void void void void void的设计无需返回asynchroncon而无需返回任务对象。他们在执行过程中增加未偿还操作的计数,并在完成后减少。在某些情况下,这种行为可能是有益的,例如未期望或明确预期操作结果的火灾和...
    编程 发布于2025-04-21
  • 切换到MySQLi后CodeIgniter连接MySQL数据库失败原因
    切换到MySQLi后CodeIgniter连接MySQL数据库失败原因
    无法连接到mySQL数据库:故障排除错误消息要调试问题,建议将以下代码添加到文件的末尾.//config/database.php并查看输出: ... ... 回声'... echo '<pre>'; print_r($db['default']); echo '</pr...
    编程 发布于2025-04-21
  • 将图片浮动到底部右侧并环绕文字的技巧
    将图片浮动到底部右侧并环绕文字的技巧
    在Web设计中围绕在Web设计中,有时可以将图像浮动到页面右下角,从而使文本围绕它缠绕。这可以在有效地展示图像的同时创建一个吸引人的视觉效果。 css位置在右下角,使用css float and clear properties: img { 浮点:对; ...
    编程 发布于2025-04-21
  • 在Go语言中,`defer`语句后使用`()`的原因及作用
    在Go语言中,`defer`语句后使用`()`的原因及作用
    在go 考虑示例:尝试递延函数f本身,这是没有意义的。相反,正确的语法为: defer f(),此构建一个闭合,在激活defer语句时捕获当前上下文并执行函数f。外括号立即执行闭合,以确保在执行延期语句之后进行函数调用。defer func(n int) { fmt.Println(n) }(i)...
    编程 发布于2025-04-21
  • CSS强类型语言解析
    CSS强类型语言解析
    您可以通过其强度或弱输入的方式对编程语言进行分类的方式之一。在这里,“键入”意味着是否在编译时已知变量。一个例子是一个场景,将整数(1)添加到包含整数(“ 1”)的字符串: result = 1 "1";包含整数的字符串可能是由带有许多运动部件的复杂逻辑套件无意间生成的。它也可以是故意从单个真理...
    编程 发布于2025-04-21
  • Android如何向PHP服务器发送POST数据?
    Android如何向PHP服务器发送POST数据?
    在android apache httpclient(已弃用) httpclient httpclient = new defaulthttpclient(); httppost httppost = new httppost(“ http://www.yoursite.com/script.p...
    编程 发布于2025-04-21
  • 为什么HTML无法打印页码及解决方案
    为什么HTML无法打印页码及解决方案
    无法在html页面上打印页码? @page规则在@Media内部和外部都无济于事。 HTML:Customization:@page { margin: 10%; @top-center { font-family: sans-serif; font-weight: bo...
    编程 发布于2025-04-21
  • 查找当前执行JavaScript的脚本元素方法
    查找当前执行JavaScript的脚本元素方法
    如何引用当前执行脚本的脚本元素在某些方案中理解问题在某些方案中,开发人员可能需要将其他脚本动态加载其他脚本。但是,如果Head Element尚未完全渲染,则使用document.getElementsbytagname('head')[0] .appendChild(v)的常规方...
    编程 发布于2025-04-21
  • 如何从PHP中的数组中提取随机元素?
    如何从PHP中的数组中提取随机元素?
    从阵列中的随机选择,可以轻松从数组中获取随机项目。考虑以下数组:; 从此数组中检索一个随机项目,利用array_rand( array_rand()函数从数组返回一个随机键。通过将$项目数组索引使用此键,我们可以从数组中访问一个随机元素。这种方法为选择随机项目提供了一种直接且可靠的方法。
    编程 发布于2025-04-21
  • 手动触发桌面应用中的绘图事件方法
    手动触发桌面应用中的绘图事件方法
    [2 [2 油漆事件对于更新桌面应用程序中的图形用户界面(GUI)至关重要。 当动态更改面板上的文本之类的元素时,您需要手动触发重新粉刷以反映这些更改。本文详细介绍了如何完成此操作。 用于手动重新启动表格或控制类中的几种方法允许您强制重新涂抹: :此方法计划对控件进行重新涂漆。实际的重新绘制稍后发...
    编程 发布于2025-04-21
  • 如何检查对象是否具有Python中的特定属性?
    如何检查对象是否具有Python中的特定属性?
    方法来确定对象属性存在寻求一种方法来验证对象中特定属性的存在。考虑以下示例,其中尝试访问不确定属性会引起错误: >>> a = someClass() >>> A.property Trackback(最近的最新电话): 文件“ ”,第1行, attributeError:SomeClass实...
    编程 发布于2025-04-21
  • 使用jQuery如何有效修改":after"伪元素的CSS属性?
    使用jQuery如何有效修改":after"伪元素的CSS属性?
    在jquery中了解伪元素的限制:访问“ selector 尝试修改“:”选择器的CSS属性时,您可能会遇到困难。 This is because pseudo-elements are not part of the DOM (Document Object Model) and are th...
    编程 发布于2025-04-21

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3