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

JavaScript初学者函数应用求助:数字翻译功能改造

数字翻译程序代码问题排查与修正

原代码存在的问题

  • 函数translate中定义了word变量,但返回的是未定义的translatedNumber,导致函数无法正确输出翻译结果。
  • 调用函数后,alert语句里使用的word是函数内部的局部变量,外部无法访问,应该用接收函数返回值的translatedNumber。
  • prompt返回的是字符串类型数字,直接作为数组索引存在潜在风险,需要显式转换为数字类型。
  • 函数内的语言判断未做大小写处理,若用户输入首字母大写的语言(如"French"),会导致判断失败。
  • 法语数组里的"vingt-sept,"多了一个逗号,属于拼写错误;德语数组里的"dreiβig"应为正确拼写"dreißig"。

修正后的代码

// 数字翻译函数
function translate(number, lang) {
    // 统一转小写避免大小写问题
    const lowerLang = lang.toLowerCase();
    // 根据语言获取对应翻译
    const word = lowerLang === "french" ? french[number] : german[number];
    // 返回翻译结果
    return word;
}

// 法语数字数组(0-30)
const french = ["zéro", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", 
"dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix-sept", "dix-huit", "dix-neuf", 
"vingt", "vingt et un", "vingt-deux", "vingt-trois", "vingt-quatre", "vingt-cinq", 
"vingt-six", "vingt-sept", "vingt-huit", "vingt-neuf", "trente"];

// 德语数字数组(0-30)
const german = ["null", "eins", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", 
"neun", "zehn", "elf", "zwölf", "dreizehn", "vierzehn", "fünfzehn", "sechszehn", "siebzehn", 
"achtzehn", "neunzehn", "zwanzig", "einundzwanzig", "zweiundzwanzig", "dreiundzwanzig", 
"vierundzwanzig", "fünfundzwanzig", "sechsundzwanzig", "siebenundzwanzig", "achtundzwanzig", 
"neunundzwanzig", "dreißig"];

// 获取用户输入的数字并验证范围
let number = prompt("What number to translate? ");
// 转换为数字类型
number = Number(number);
while (isNaN(number) || number <= 0 || number > 30) {
    alert("Enter a number between 1 and 30.");
    number = Number(prompt("What number to translate? "));
}

// 获取用户输入的语言并验证
let lang = prompt("What language to translate? ");
while (lang.toLowerCase() !== "french" && lang.toLowerCase() !== "german") {
    alert("Enter french or german only");
    lang = prompt("What language to translate? ")
}

// 调用翻译函数并获取结果
const translatedNumber = translate(number, lang);
// 弹出翻译结果
alert(`The number ${number} is ${translatedNumber} in ${lang}`);

关键修正说明

  1. 函数内部修正返回值为计算得到的word,同时对传入的语言参数做小写转换,确保判断逻辑不受输入大小写影响。
  2. 将用户输入的数字显式转换为Number类型,并在循环判断中加入isNaN验证,避免非数字输入引发的错误。
  3. 修正数组中的拼写错误,保证翻译结果的准确性。
  4. 调用函数后,使用translatedNumber替代原本无法访问的word变量,正确展示翻译结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 08:54:18