如何将现有JavaScript凯撒密码脚本改写为函数?
凯撒密码脚本重构为函数的分步指导
核心思路
把原脚本里的加密逻辑封装成可复用的函数,让代码更模块化,同时支持自定义移位量(原代码固定了shift=15,改成函数后可动态传入)。
重构后的完整代码
// 封装凯撒加密逻辑为函数 function caesarCipher(message, shift) { const alphabet = "abcdefghijklmnopqrstuvwxyz"; const alphabetUpper = alphabet.toUpperCase(); let result = ""; for (let i = 0; i < message.length; i++) { const letter = message[i]; // 处理非字母字符,直接保留 if (letter.toLowerCase() === letter.toUpperCase()) { result += letter; continue; } // 处理大写字母 if (letter === letter.toUpperCase()) { const index = alphabetUpper.indexOf(letter); // 用取模运算简化循环逻辑,无需判断是否超过25 const newIndex = (index + shift) % 26; result += alphabetUpper[newIndex]; continue; } // 处理小写字母 const index = alphabet.indexOf(letter); const newIndex = (index + shift) % 26; result += alphabet[newIndex]; } return result; } // 调用函数实现原脚本功能 const userInput = prompt("What's your message?"); const shiftAmount = 15; const encodedMessage = caesarCipher(userInput, shiftAmount); alert(`Your encoded message is ${encodedMessage}`);
关键改动说明
- 函数定义:用
function关键字声明caesarCipher函数,接收message(待加密文本)和shift(移位次数)两个参数,返回加密后的字符串。 - 简化边界判断:用
(index + shift) % 26替代原代码里的多分支if-else,当index + shift超过25时,取模运算会自动回到字母表开头,逻辑更简洁。 - 模块化复用:后续如需加密其他文本,直接调用
caesarCipher(要加密的内容, 移位量)即可,无需重复编写加密逻辑。 - 变量命名优化:把原代码里的
j改为index,alphabetupper改为alphabetUpper,符合JS命名规范,可读性更强。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

