怎么给String.fromCharCode的参数传入变量

在研究js加密解密时遇到问题,如何将动态数据传递给String.fromCharCode。通常方法能处理逗号间隔的数字,但无法直接接收数组。通过应用JavaScript的apply方法,可以将数组作为参数传递,成功解决动态传参并避免内存溢出的问题。
今天在研究js加密解密过程中,想做一个工具,发现只能给fromCharCode传以逗号间隔的数字,如何动态传入?

先来看一下 fromCharCode() 的定义和用法(属于String对象)

fromCharCode() 可接受一个或多个指定的 Unicode 值,然后返回一个字符串。

注意:该方法是 String 的静态方法,字符串中的每个字符都由单独的 Unicode 数字编码指定。使用语法: >String.fromCharCode()
method 所有主要浏览器都支持 fromCharCode() 方法

语法

String.fromCharCode(code1, code2, code3, …, codeN)

code1, code2, code3, …, codeN:必需。一个或多个 Unicode 值,即要创建的字符串中的字符的 Unicode 编码。

虽然下面这样的代码能执行
document.write(String.fromCharCode(72,69,76,76,79));
但是,如果我想用String.fromCharCode()转换外部输入的数据怎么办?

我尝试了这样一串代码

array = [72,69,76,76,79];
document.write(String.fromCharCode(array));

结果出乎意料的失败了.当我把它作为一个数组传递的时候,却不能运行。我也试着将数组转换为toString(),以及array.join(“,”); 创建一个逗号分隔列表…但没有任何结果。怎么解决?
后来经过查阅资料发现

JavaScript 函数 Apply

要求每句添加注释 var times, num, score, content, mainQuestion, submit, mask; var answerList = {}; init(); function init() { times = document.querySelectorAll(".time"); times.forEach((item) => getTime(120, item)); setScore(); setRightContent(); createQuestion(); submitAnswer(); } function setScore() { num = document.querySelector(".num"); score = document.querySelector(".main-sorce"); num.innerHTML = `共${questionList.length}题`; var s = questionList.reduce((value, item) => value + item.score, 0); score.innerHTML = `共${questionList.length}题,合计${s}分`; } function setRightContent() { content = document.querySelector(".content"); content.innerHTML = questionList .map((item, index) => { return `<li><a href='#${index}'>${index + 1}</a></li>`; }) .join(""); } function createQuestion() { mainQuestion = document.querySelector(".main-question"); mainQuestion.addEventListener("click", questionHandler); mainQuestion.innerHTML = questionList .map((item, index) => { return ` <li class="clear" id='${index}'> <div class="left"><span>${index + 1}</span></div> <div class="question"> <div>${item.question}</div> <div class="line"></div> <ul> ${item.options .map((t, ind) => { return `<li><input type="radio" name="${index}" data='${String.fromCharCode( 65 + ind )}'/> ${ String.fromCharCode(65 + ind) + "." + t }</li>`; }) .join("")} </ul> </div> </li> `; }) .join(""); } function questionHandler(e) { if (e.target.nodeName !== "INPUT") return; const name = e.target.name; const data = e.target.getAttribute("data"); answerList[name] = data; } function submitAnswer() { submit = document.querySelector(".submit"); mask = document.querySelector(".mask"); submit.addEventListener("click", clickHandler); mask.addEventListener("click", maskHiddenHandler); } function clickHandler(e) { mask.style.display = "block"; document.querySelector(".score-panel").innerHTML = ` 您一共得了${Object.keys(answerList).reduce((value, key) => { if (questionList[Number(key)].result === answerList[key]) value += questionList[Number(key)].score; return value; }, 0)}分 `; } function maskHiddenHandler(e) { mask.style.display = "none"; }
08-02
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值