面试题答案
一键面试- 表达式优先级规则:
- 首先,JavaScript 中运算符优先级顺序大致为:括号内表达式优先计算,然后是一元运算符(如
++
,--
),接着是乘法、除法、取模运算,最后是加法和减法运算。
- 首先,JavaScript 中运算符优先级顺序大致为:括号内表达式优先计算,然后是一元运算符(如
- 自增自减运算符特性:
- 前置自增(
++x
)和前置自减(--x
):先将变量的值增加或减少 1,然后再将改变后的值参与表达式运算。 - 后置自增(
x++
)和后置自减(x--
):先将变量当前的值参与表达式运算,然后再将变量的值增加或减少 1。
- 前置自增(
- 具体运算过程:
- 初始值:
a = 1
,b = 2
,c = 3
。 - 计算
c-- - a++
:- 先计算
c--
,c
当前值为 3,参与运算,然后c
变为 2。 - 再计算
a++
,a
当前值为 1,参与运算,然后a
变为 2。 - 所以
c-- - a++
为3 - 1 = 2
。
- 先计算
- 计算
++b * (c-- - a++)
:- 先计算
++b
,b
先变为 3,然后参与运算。 - 前面已算出
c-- - a++
为 2,所以++b * (c-- - a++)
为3 * 2 = 6
。
- 先计算
- 计算
a++ + ++b * (c-- - a++)
:- 前面已算出
++b * (c-- - a++)
为 6。 - 再计算
a++
,a
当前值为 2(上一步a++
后变为 2),参与运算,然后a
变为 3。 - 所以
a++ + ++b * (c-- - a++)
为2 + 6 = 8
。
- 前面已算出
- 计算
a++ + ++b * (c-- - a++) - --b
:- 前面已算出
a++ + ++b * (c-- - a++)
为 8。 - 计算
--b
,b
先变为 2,然后参与运算。 - 所以
a++ + ++b * (c-- - a++) - --b
为8 - 2 = 6
。
- 前面已算出
- 最终,
result = 6
,此时a = 3
,b = 2
,c = 2
。
- 初始值:
综上,result
的值为 6。在整个运算过程中,严格遵循了 JavaScript 的表达式优先级规则以及自增自减运算符的特性。