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

Udacity谋杀谜题:JavaScript变量无法保存值问题求助

问题分析与解决

嘿,我一眼就揪出问题所在啦!这是新手常踩的小坑——你把赋值运算符和全等比较运算符搞混了😅

核心错误点

在JavaScript里:

  • = 是赋值运算符,用来给变量设置新值(比如 weapon = "pool stick")
  • === 是全等比较运算符,用来判断两个值是否完全相等(比如 room === "ballroom")

你代码里所有给weapon和solved赋值的地方都用了===,这相当于在做“判断变量是否等于某个值”的操作,而非真正给变量赋值。所以不管条件满足与否,weapon始终是初始的空字符串,solved也一直是初始的true,自然没法输出正确结果。

修正后的代码

var room = "ballroom"; 
var suspect = "Mr. Kalehoff"; 
var weapon = ""; 
var solved = true; 

if (room === "dining room" && suspect === "Mr. Parkes") { 
  weapon = "knife"; 
  solved = true; 
} else if (room === "gallery") { 
  weapon = "trophy"; 
  solved = true; 
} else if (room === "ballroom" && suspect === "Mr. Kalehoff") { 
  weapon = "pool stick"; 
  solved = true; 
} else { 
  weapon = "poison"; 
  solved = false; 
} 

if (solved) { 
  console.log(suspect + " did it in the " + room + " with the " + weapon + "!"); 
}

小提醒

以后写代码时一定要分清这两个运算符:

  • 给变量赋值用单等号 =
  • 判断值是否相等用全等比较 ===(优先用全等,能避开类型转换的坑)

现在你再修改room和suspect的值测试,就能得到正确的控制台输出啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:46:54