我在这里发帖之前浏览了所有问题。展示比解释好,因为它很简单。
我简化了 JS 代码,以便您可以测试问题:
var output = "";
var num = 0;
var rotor1 = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","W","X","Y","Z"];
var rotor2 = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","W","X","Y","Z"];
var rotor3 = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","W","X","Y","Z"];
var rotor1Position = 5;
var rotor2Position = 12;
var rotor3Position = 4;
function Encript(input)
{
result = "";
for(i = 0; i < input.length; i++)
{
result += DoEncript(input.charAt(i));
}
num = 0;
return result;
}
function Decript(input)
{
result = "";
for(i = 0; i < input.length; i++)
{
result += DoDecript(input.charAt(i));
}
num = 0;
return result;
}
function Encript(input)
{
output = "ENCRYPT: " + input + "<br>";
if((rotor1.indexOf(input) + rotor1Position) > rotor1.length - 1)
{
num = rotor1.indexOf(input) + rotor1Position - rotor1.length;
}
else
{
num = rotor1.indexOf(input) + rotor1Position;
}
output += "rotor1 = " + rotor1[num] + "<br>";
if((num + rotor2Position) > rotor2.length - 1)
{
num = num + rotor2Position - rotor2.length;
}
else
{
num += rotor2Position;
}
output += "rotor2 = " + rotor2[num] + "<br>";
if((num + rotor3Position) > rotor3.length - 1)
{
num = num + rotor3Position - rotor3.length;
}
else
{
num += rotor3Position;
}
output += "rotor3 = " + rotor3[num] + "<br>";
result = output + "<hr>";
}
function Decript(input)
{
output = "DECRYPT: " + input + "<br>";
if((rotor1.indexOf(input) - rotor1Position) < 0)
{
num = rotor1.length - ((num - rotor1Position)*-1);
}
else
{
num = rotor1.indexOf(input) - rotor1Position;
}
output += "rotor1 = " + rotor1[num] + "<br>";
if((num - rotor2Position) < 0)
{
num = rotor2.length - ((num - rotor2Position)*-1);
}
else
{
num -= rotor2Position;
}
output += "rotor2 = " + rotor2[num] + "<br>";
if((num - rotor3Position) < 0)
{
num = rotor3.length - ((num - rotor3Position)*-1);
}
else
{
num -= rotor3Position;
}
output += "rotor3 = " + rotor3[num] + "<br>";
result = output;
}
HTML 调用很简单:
<html>
<head>
<title>Encription</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="enigma3.js" type="text/javascript"></script>
</head>
<body onload="document.getElementById('result').innerHTML = Encript('Y');">
<div id="result">ENIGMA</div>
</body>
</html>
它返回为 undefined。就像我没有传递任何参数一样。我真的不明白为什么。
谢谢你把我从这个荒谬的问题中解救出来,
答案 0 :(得分:0)
未声明的 JavaScript 变量没有自动值。相反,它们保持为 tomr@DESKTOP /cygdrive/c/Homes/Isabelle2021/Isabelle2021
$ isabelle export -O /cygdrive/c/test -x *:** HOL
。因此,您必须在返回之前声明它,如下所示:
undefined
function Encript(input) {
let result = "";
for (i = 0; i < input.length; i++) {
result += DoEncript(input.charAt(i));
}
num = 0;
return result;
}
function DoEncript(char){
//Your actual code here
return "a";
}