JavaScript 链接函数,最后一个方法返回 'undefined'

标签 javascript scope chain

我的应用收到一个同样经过加密的 Base64 编码值。数据可以通过几种不同的方式出现,因此我想创建可链接的方法来保持代码的整洁和模块化。

我希望能够编写:decryptionChain.decodeBase64(b64Value).stringToBuffer().finallyDecrypt();

当我运行代码时,最后一个属性方法“finallyDecrypt”返回未定义。

为什么“finallyDecrypt”方法返回为未定义?其余的一切都有效,如果我运行 ecryptionChain.decodeBase64(b64Value).stringToBuffer() 我会得到我期望的缓冲区。只有当finallyDecrypt被链接时我才会出错。

这是代码:

   function decrypt(encrypted) {
    var decipher = crypto.createDecipheriv(algorithm, password, iv);
    decipher.setAuthTag(encrypted.tag);
    var dec = decipher.update(encrypted.content, 'hex', 'utf8');
    dec += decipher.final('utf8');
    return dec;
}

var decryptionChain = {

    currentValue:"",

    decodeBase64: function (encryptedValue){
        this.currentValue = new Buffer(encryptedValue.toString(), "base64");
        return this;
    },

    stringToBuffer: function() {
        if (this.currentValue) {
            myBuffer = JSON.parse(this.currentValue, function (key, value) {
                 return value && value.type === 'Buffer'
                    ? new Buffer(value.data)
                    : value;

            });

        }
        return myBuffer;
    },

    finallyDecrypt : function(myBuffer){
        if(myBuffer){
        decrypt(myBuffer);
        }
        return this;

    }
};

最佳答案

从显示的代码中,我发现了一些问题。首先:

decryptionChain != decryptChain如果这只是问题中的拼写错误,请忽略,如果不是,请参阅。

请使用var减少范围错误或“范围变量”被遗漏的可能性。

第二,不要使用 string as a Boolean .

第三,您似乎对return value && value.type === 'Buffer' ? new Buffer(value.data) : value;有疑问。 ,请在返回前赋值(不是必须的,但是更简单)

关于JavaScript 链接函数,最后一个方法返回 'undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31863701/

相关文章:

javascript - 请求 Node 模块不提供 html

javascript - 访问过的链接在 IE11 中没有改变颜色

python - 访问函数内的全局变量

python - 有没有办法避免这么多列表(链(*list_of_list))?

javascript - 使用 Mootools 链接 AddClass/RemoveClass 事件

javascript - slider 背景

javascript - 用于多列列表的 JQuery slideToggle

javascript - 无法在 Javascript 中访问另一个对象内的不同对象,它给出 ReferenceError : abc is not defined

java - Java中的未知编译器错误,我认为这是一个范围问题

java - Spring异常类型链中的路由器