JavaScript 函数参数返回为未定义

时间:2021-03-21 21:50:32

标签: javascript html

我在这里发帖之前浏览了所有问题。展示比解释好,因为它很简单。

我简化了 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。就像我没有传递任何参数一样。我真的不明白为什么。

谢谢你把我从这个荒谬的问题中解救出来,

1 个答案:

答案 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";
}

相关问题