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

如何将现有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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:56:09