应该在节点应用程序中的函数未被调用
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) { }
每当将负数传递到节点中的提示时,我都会尝试调用 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) { }