首页 > 试题广场 >

以下代码,正确的运行结果是? var x =

[单选题]
以下代码,正确的运行结果是?

 var x = 5;

 console.log(x++ + ++x);

 console.log(++x * --x);

  console.log(x);
  • 10 49 7
  • 11 56 7
  • 14 49 7
  • 12 56 7
刚刚查了一下,开始很困惑应该是11才对;为什么是12呢。后来查询发现,+运算符的优先级低于++所以应该是先++x 然后运行完了 再执行
x++ 这两个都执行完了再执行+运算;所以结果为12.
如果理解有误欢迎大家指正

发表于 2019-02-27 22:48:27 回复(1)
 var x = 5;
 // x++返回5, ++x返回7, 5 + 7 = 12
 console.log(x++ + ++x);
 // 此时x=7. ++x返回8, --x返回7, 8 * 7 = 56
 console.log(++x * --x);
 // 此时x=7.
 console.log(x);

本题考察的是运算符优先级规则和前置递增与后置递增的区别。
运算符优先级规则如下:后置递增(17),前置递增(16),乘号(14),加号(13)
后置递增:先返回值,然后执行递增操作
后置递增:先执行递增操作,然后再返回值

参考文档:

  1. MDN: Operator precedence
  2. MDN: Increment (++)
编辑于 2019-05-15 22:15:56 回复(0)
这里有个坑,看了很久才发现。 第三行那里是- -x不是-x,他两个-连在一起了
发表于 2018-12-16 15:42:47 回复(1)
x++和++x 两者区别: 如果单独作为一条语句的话,并没有区别
发表于 2019-03-03 22:33:49 回复(0)
第一个为什么是12不是11呢
发表于 2019-01-27 11:40:07 回复(3)