2016-12-31 58 views
0

我試圖在負數傳遞到節點中的提示時調用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); 
}; 

回答

0

您的問題是,你不通過encrypted您在reverseEncryption存儲您的功能。在那個函數encrypted內,並且因爲你的腳本會失敗。

使用承諾時,您應始終在您的鏈接末尾使用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) { }

功能
相關問題