You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JavaScript中的if/else语句转换为三元运算符?

把if/else转换为三元运算符的正确写法

你的代码逻辑是切换图片和estadoCambio的状态,直接用三元运算符可以这么改:

方法一:用逗号运算符整合多个操作

三元运算符的分支里可以通过逗号运算符执行多个表达式(逗号会按顺序执行每个表达式,返回最后一个的值,这里我们只需要执行操作):

function change(){
  !estadoCambio ? 
    (document.images[0].src = "images/animal.jpg", estadoCambio = true) : 
    (document.images[0].src = "images/flor.jpg", estadoCambio = false);
}

方法二:拆分逻辑更简洁

因为estadoCambio每次都是取反,没必要在两个分支分别赋值,可以先根据条件设置图片路径,再直接取反状态:

function change(){
  document.images[0].src = !estadoCambio ? "images/animal.jpg" : "images/flor.jpg";
  estadoCambio = !estadoCambio;
}

说说你之前写法的问题

  • 第一种立即执行函数的写法,语法上其实可行,但完全没必要多此一举,而且如果没写对函数里的引号或者分号就会报错;
  • 第二种用[]的方式完全不对,数组只是创建一个数组实例,不会执行里面的赋值语句,自然达不到效果。

完整修改后的代码示例:

<body>
  <img src="images/animal.jpg" width="200" height="200">
  <button onclick="change()" type="button">Change</button>

  <script>
    let estadoCambio = true;
    function change(){
      // 选上面任意一种方法即可,比如用更简洁的方式二
      document.images[0].src = !estadoCambio ? "images/animal.jpg" : "images/flor.jpg";
      estadoCambio = !estadoCambio;
    }
  </script>
</body>

内容的提问来源于stack exchange,提问作者Aritz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 14:41:26