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

《Eloquent JavaScript》第三章鹰嘴豆泥示例代码疑问求助

理解鹰嘴豆泥食谱代码的逻辑与预期输出

嘿,我来帮你拆解这段《Eloquent JavaScript》里的代码,搞清楚它的逻辑和输出是什么!

首先,先看这段代码的核心结构:

  • hummus 是一个接受**比例系数factor**的函数,用来按比例缩放食谱里的食材量
  • 它内部定义了一个嵌套函数ingredient,专门负责处理单份食材的计算和打印:
    1. 计算实际用量:把食材的基础量amount乘以传入的比例系数factor
    2. 处理单位单复数:如果实际用量大于1,就给单位unit加上s变成复数形式
    3. 用模板字符串格式化并打印出食材信息

当调用 hummus(1)(基础配方,不缩放)时,预期输出是:

1 can chickpeas
0.25 cup tahini
0.25 cup lemon juice
1 clove garlic
2 tablespoons olive oil
0.5 teaspoon cumin

拆解每一行的逻辑:

  • 1 can chickpeas:1×1=1,不大于1,单位can保持单数
  • 0.25 cup tahini:0.25<1,单位cup不变
  • 2 tablespoons olive oil:2×1=2>1,所以tablespoon变成复数tablespoons

如果调用 hummus(2)(双倍量配方),输出会变成:

2 cans chickpeas
0.5 cup tahini
0.5 cup lemon juice
2 cloves garlic
4 tablespoons olive oil
1 teaspoon cumin

这里因为factor是2,所有基础量都乘以2:

  • 2>1,所以can变成cans,clove变成cloves
  • 0.25×2=0.5<1,cup还是单数
  • 0.5×2=1,不大于1,所以teaspoon保持单数

简单来说,这段代码就是一个可缩放的食谱生成工具,传入不同的factor就能得到对应比例的食材清单,还会自动处理单位的单复数,非常实用~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 00:17:39