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

JavaScript中Invalid left-hand side in assignment错误排查(三元表达式版FizzBuzz)

问题分析与解决

你代码里的报错和数字转字符串无关,是几个明显的语法错误导致的:

  • 条件判断写错了:x % 5 === 5 = 0是非法语法,应该是x % 5 === 0——你多写了5 =,这会让JS把5 = 0当成赋值操作,而赋值的左操作数不能是常量,所以触发Invalid left-hand side in assignment错误。
  • 三元表达式括号不匹配:最后多了一个右括号),破坏了语法结构。
  • 循环内没有递增x,就算修复前面的错误,代码也会无限循环。

修正后的三元表达式实现

以下是能正常运行的纯三元表达式版本:

var x = 1;

while (x <= 20) {
  var result = (x % 3 === 0 && x % 5 === 0) ? "FizzBuzz" : 
               (x % 3 === 0) ? "Fizz" : 
               (x % 5 === 0) ? "Buzz" : 
               x.toString(); // 转字符串让输出类型统一,也可以直接写x,JS会自动转换
  console.log(result);
  x++; // 必须递增x,否则无限循环
}

额外说明

  • 嵌套三元表达式尽量换行对齐,避免写成超长单行代码,提升可读性。
  • 如果你想更简洁,也可以用混合逻辑的写法(但这不是纯三元表达式):
var x = 1;
while (x <= 20) {
  var result = '';
  result += x % 3 === 0 ? 'Fizz' : '';
  result += x % 5 === 0 ? 'Buzz' : '';
  console.log(result || x);
  x++;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:06:19