使用Javascript开发1-30数字英转法/德翻译应用的实现问题
现有代码问题整理
- 执行顺序错误:先调用了translate函数,之后才定义翻译数组、获取用户输入的数字和语言,函数执行时依赖的变量全部未定义,会直接报错
- if判断逻辑错误:判断语言相等使用了赋值运算符
=而非全等判断===,会直接将lang强制赋值为French,永远不会触发else分支 - 函数逻辑缺失:没有接收数字、语言作为入参,也没有根据输入的数字取翻译数组对应下标的值,直接输出了整个翻译数组
- 冗余无效代码:
var x=translate和translate(x)的逻辑完全无效,没有实际作用 - 缺少输入校验:没有判断用户输入的数字是否在1-30区间、是否为合法数字,也没有校验输入的语言是否符合要求
修正后可运行代码
// 先定义翻译数组 const frenchTranslation = ["Please enter a number between 1-30", "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"]; const germanTranslation = ["Please enter a number between 1-30","Eins","Zwei","Drei","Vier","Fünf","Sechs","Sieben","Acht","Neun","Zehn","Elf","Zwölf","Dreizehn","Vierzehn","Fünfzehn","Sechzehn","Siebzehn","Achtzehn","Neunzehn","Zwanzig","Einundzwanzig","Zweiundzwanzig","Dreiundzwanzig","Vierundzwanzig","Fünfundzwanzig","Sechsundzwanzig","Siebenundzwanzig","Achtundzwanzig","Neunundzwanzig","Dreiβig"]; // 定义翻译函数,接收数字、目标语言两个参数 function translate(number, targetLang) { // 校验数字合法性 if (isNaN(number) || number < 1 || number > 30) { return frenchTranslation[0]; } // 校验语言后返回对应翻译 if (targetLang === "French") { return frenchTranslation[number]; } else if (targetLang === "German") { return germanTranslation[number]; } else { return "Please enter valid language: French or German (Case Sensitive)"; } } // 获取用户输入 const inputNumber = Number(prompt("What is your number? Must be between 1-30")); const inputLang = prompt("What is your language? Must be 'French' or 'German'. Case Sensitive."); // 调用函数输出结果 const result = translate(inputNumber, inputLang); console.log(result); alert(result);
内容的提问来源于stack exchange,提问作者NateNz
相关产品推荐
相关产品推荐

