首页 > 试题广场 >

执行以下程序,输出结果为()

[单选题]
执行以下程序,输出结果为()
var x = 10;
var y = 20;
var z = x < y ? x++:++y;
console.log('x='+x+';y='+y+';z='+z);
  • x=11;y=21;z=11
  • x=11;y=20;z=10
  • x=11;y=21;z=10
  • x=11;y=20;z=11
后置自增,先参与运算,后自增。 前置自增,先自增,后参与计算。
发表于 2019-08-18 12:13:26 回复(5)
  • 赋值=运算符的优先级最低。因此先看右边的表达式。
  • 右边的表达式是一个三元运算符。
    判断x<y(10<20)返回true,因此执行:前的表达式。
  • 也就是整个表达式等价于:z = x++。
  • z=x自增前的值为10。
  • x++,x最终等于11。
  • y的值没有发生变化(因为没有执行:后面的表达式),因此y的值仍为20。
发表于 2019-08-15 21:51:34 回复(3)
x++是属于后置型运算,优先级低,z=x++是先算z=x,最后x再执行自增。
发表于 2020-08-15 19:43:52 回复(2)
++x 先加再赋值   x++ 先赋值在++
发表于 2020-04-20 15:16:58 回复(0)
setTimeout应该属于window对象,很多同学可能在默认使用Ts的过程中直接调用setTimeout方法出现警告或者报错,前面加一个window就好了
发表于 2021-09-22 21:37:16 回复(0)
var x=10;
var y=20;
var z=x<y?x++:++y;

// 等效于
y = y+1;
// 在三目运算前 先自加,在运算
// 本条件是三目运算执行了前面,当执行后面时,也要注意结果
var z = x<y?x:y
x = x+1;//先运算,再加一个
console.log('x='+x+';y='+y+';z='+z);

发表于 2021-08-06 21:44:31 回复(0)
++y被短路了,不执行
发表于 2021-05-31 20:14:52 回复(0)
😱针细
发表于 2020-01-24 23:00:54 回复(0)
先看题目代码: ```js var x = 10; var y = 20; var z = x < y ? x++ : ++y; console.log('x=' + x + ';y=' + y + ';z=' + z); ``` 我们需要判断 `x < y` 是否为真,然后根据三元表达式 `?:` 来决定赋值给 `z` 的是 `x++` 还是 `++y`。 --- ## 关键在于 `x++`(后置自增)与 `++y`(前置自增)的区别 - **后置自增(x++)**:返回的是自增前的旧值,然后 `x` 自己再加 1。 - **前置自增(++y)**:先让 `y` 自加 1,再返回自增后的新值。 在本题中: 1. 初始 `x = 10`, `y = 20`。 2. 判断 `x < y`,即 `10 < 20`,为 **true**,所以三元运算走的是 `x++` 这一支。 3. `z = x++` 的执行过程: - 计算表达式值时,`x++` 先返回 **旧值** `10` 给 `z`。 - `x` 随后**自身变成** `11`。 执行结束后,各变量最终状态: - `x` 从 10 变为 **11**(因为 `x++` 的后置自增) - `y` 依然是 **20**(没有用到 `++y` 支路) - `z` 得到的值是 10(后置自增返回旧值) 所以最后 `console.log` 输出: ``` x=11; y=20; z=10 ``` 也就是选项 **B**。
发表于 2025-01-06 12:47:25 回复(0)
逻辑短路了,没注意...
发表于 2022-09-28 17:29:38 回复(0)
后缀递增/递减,在语句被求值后才发生。
发表于 2022-06-29 19:50:24 回复(0)
三元运算符,判断为true后只执行了x++,没执行++y
发表于 2022-04-30 00:30:04 回复(0)
x++是后置自增,也就是先返回x值,然后再自增加1 那x为什么不是10呢,不是先返回x值吗?
发表于 2022-04-26 18:25:22 回复(0)
后置运算 先运算再自增这里x先赋值给z后再加一
发表于 2021-09-05 21:23:16 回复(0)
解析:++在前,先++,再赋值;++在后,先赋值,后++
var z=x<y?x++:++y;
可将该语句进行拆分:
if (x < y) {
    z = x;
x++;
}else {
++y;
z = y;
}
发表于 2021-09-01 22:53:29 回复(0)
前置自增:先自增,后运算
后置自增:先运算,后自增
z=x++想当于z=x,x++即
z=10
x=x+1=11
y=20
发表于 2021-04-23 19:24:58 回复(0)
冒号后面的语句不执行
发表于 2021-03-21 17:01:20 回复(0)
<p>因为是三元运算符,所以有一个++不会被执行,需要考虑细节</p>
发表于 2020-12-11 16:45:03 回复(0)
因為z=x,之後x+1
发表于 2020-11-16 23:44:12 回复(0)
z = x<y?x++:++y; 
=> if(x<y){z = x++ ;} else { z = ++y}
顺序:
1、x < y , true 
    =>
    z = x++ ; z => 10
2、x++; x=> 11
3、z = ++y 并没有执行他所在的语句块 y = 20 

发表于 2020-11-11 15:18:21 回复(0)