gpt4 book ai didi

javascript - JavaScript 中后缀增量遇到加法(+)运算符时如何工作?

转载 作者:行者123 更新时间:2023-12-03 03:34:27 24 4
gpt4 key购买 nike

首先,我知道后面谈到的表达式有副作用,不应该在生产环境中使用。我只是想通过它们了解JavaScript。所有这些都在 Chrome 下进行了测试。

var a = 42;
var b = "42";
a + ++b; // result is 85

这是我对a+++b的理解,

根据Operator precedence前缀增量(++)(优先级15)的优先级高于加法(+)(优先级13)。 。 ++b 可以解析 var ToNumber(GetValue(expr))43,引用12.5.7 Prefix Increment Operator 。那么a + 43的结果可能是85

但是,

var a = 42;
var b = "42";
a++ + b; // "4242"

为什么a++ + b的结果是“4242”

我尝试理解结果“4242”,似乎a++首先返回42,然后返回42 + '42'42首先会是'42' var ToString(),引用12.7.3 The Addition operator ( + ) 。那么结果可能是“4242”

但这似乎违反了规则:后缀增量(优先级16)高于加法(优先级13)???

var a = 42;
var b = "42";
a +++b; // "4242"

如何解析a+++b;

最佳答案

哈哈,有点棘手!

后修复增量返回相同的值,然后递增变量。这是我所知道的每种语言的默认行为。

所以,当你这样做时(警告:这不是一个有效的表达式,它只是为了展示这个想法):

42++ + "42"

真正发生的事情是:

  1. 前 42 个由++ 运算符返回
  2. 然后 42 增加到 43
  3. 然后将 42(表达式的结果值)强制转换为字符串
  4. 然后连接两个操作数
<小时/>

编辑#1:

如果你这样做:

var a = 42;
var b = "42";
a + b++; // result is 84

测试一下!

编辑#2:

因此,我们得出的结论是您的问题与运算符优先级无关(:

关于javascript - JavaScript 中后缀增量遇到加法(+)运算符时如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34633124/

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