gpt4 book ai didi

javascript - 为什么 1|0,2|0 在 JavaScript 中等于 2?

转载 作者:行者123 更新时间:2023-11-30 06:58:24 25 4
gpt4 key购买 nike

如果您在 JavaScript 中计算 1|0,2|0,您将得到 2

如果计算 1|0+','+2|0,您将得到 1

我无法理解这一点。

最佳答案

二元按位运算符(包括 |)的绑定(bind)不如加法运算符 + 紧密。因此

1|0+','+2|0

真的是

1|(0+','+2)|0

这是

1|('0,2')|0

这是

1|0|0

这是 1。 (字符串“0,2”被转换为一个整数;作为一个数字它是NaN,但是因为NaN是一个浮点概念当强制为整数时,它变成 0。)

编辑 — 关于涉及 JavaScript 逗号运算符的第一个表达式 1|0,2|0。逗号运算符允许将一系列独立的、本质上独立的(而不是通过副作用)表达式“粘合在一起”,使解析器将其识别为单个表达式。计算时,每个表达式将按正常情况计算,但整个表达式的值只是列表中最后一个的值。因此,1|0,2|0 将首先导致对 1|0 求值,但该结果被丢弃,整体值只是 的值2|0.

逗号运算符对于许多从 C 派生表达式语法的语言来说很常见。(据我所知,C 从其他地方得到它;这几乎不是一个革命性的概念。)因为这样的语言允许表达式 — 只是 一个表达式——出现在几个有趣的语法情况中,并且因为表达式可以(而且经常)有副作用,所以有时将几个单独的表达式塞进一个语言真正需要一个的地方会很方便.也就是说,通常有更清洁和更好的做事方式。在 JavaScript 中,我个人更喜欢使用立即调用的函数。它需要更多的输入,并且出于性能原因可能会更差一些,但我认为它更清晰,因为它允许为临时变量和更多涉及的逻辑提供一个独立的命名空间。

关于javascript - 为什么 1|0,2|0 在 JavaScript 中等于 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17681542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com