应该在节点应用程序中的函数未被调用

Function not being called when it should be in node app

每当将负数传递到节点中的提示时,我都会尝试调用 reverseEncryption 函数。不幸的是,显示了 console.log 但没有显示 reverseEncryption。例如,如果我用 2 的密钥加密 hello,结果是 uqiim。如果然后再次通过该应用程序但使用密钥 -2 解密 uqiim 我希望调用 reverseEncryption 函数并生成 hello.

//Caesar cipher in node
var inquirer = require("inquirer");

inquirer.prompt([
  {
    type: "input",
    name: "message",
    message: "Write the message you would like to encrypt:"
  },
  {
    type: "input",
    name: "key",
    message: "Enter a number between 0 and 25"
  }
]).then(function(encrypted) {

  var newMessage = '';

  if (encrypted.key < 0) {
    console.log("cypher key is negative");
    reverseEncryption();
  } else {
    console.log("cypher key is " + encrypted.key)

    for (var i = 0; i < encrypted.message.length; i++) {
      var newKey = encrypted.message[i];

      //if (newKey.match(/[a-z]/i)){
      var newCode = encrypted.message.charCodeAt(i);

      if ((newCode >= 65) && (newCode <= 90)) {
        newKey = String.fromCharCode(((newCode - 65 + encrypted.key) % 26) + 65);
      } else if ((newCode >= 97) && (newCode <= 122)) {
        newKey = String.fromCharCode(((newCode - 97 + encrypted.key) % 26) + 97);
      }
      //}
      newMessage += newKey;
    }
  }
  console.log(newMessage);
});



var reverseEncryption = function() {
  var reverseMessage = "";

  for (var i = 0; i < encrypted.message.length; i++) {
    var reverseKey = encrypted.message[i];

    //if (newKey.match(/[a-z]/i)){
    var reverseCode = encrypted.message.charCodeAt(i);

    if ((reverseCode >= 65) && (reverseCode <= 90)) {
      reverseKey = String.fromCharCode(((reverseCode - 65 + (encrypted.key + 26)) % 26) + 65);
    } else if ((reverseCode >= 97) && (reverseCode <= 122)) {
      reverseKey = String.fromCharCode(((reverseCode - 97 + (encrypted.key + 26)) % 26) + 97);
    }
    reverseMessage += reverseKey;
  }
  console.log(reverseMessage);
};

你的问题是你没有将 encrypted 传递给存储在 reverseEncryption 中的函数。在该函数中 encrypted,因此您的脚本将失败。

使用 Promises 时,您应该始终在链的末尾使用 catch 来检查是否存在错误。

inquirer.prompt([
  {
    type: "input",
    name: "message",
    message: "Write the message you would like to encrypt:"
  },
  {
    type: "input",
    name: "key",
    message: "Enter a number between 0 and 25"
  }
]).then(function(encrypted) {
   // the res of you code
})
.catch(function(err) {
  console.error(err);
});

这个 .catch 回调会报告:[ReferenceError: encrypted is not defined]

要解决这个问题,您应该使用 reverseEncryption(encrypted); 调用函数,函数本身需要有一个参数 function (encrypted) { }