Node.js错误?存储为变量时函数的返回值更改

时间:2017-12-24 19:06:05

标签: javascript node.js variables

好吧,我不会说太多...... 我一直在使用node.js作为WebSocket服务器,我有这个问题吗?enter image description here

(预期输出为:'在这里工作')

以下是执行此操作的行: enter image description here

更多图片:enter image description here (预期输出是:'工作')

我的意思是,当值存储为变量时,它会发生变化吗? 这是nodeJS或v8引擎中的某种错误吗? (可能,这是99%我错了;)

这是函数的来源:

websocket.prototype.decodeWebSocketMessage = function decodeWebSocketMessage(native_data){
var message = native_data;//data.slice(start, end);
var FIN = (message[0] & 0x80);
var RSV1 = (message[0] & 0x40);
var RSV2 = (message[0] & 0x20);
var RSV3 = (message[0] & 0x10);
var Opcode = message[0] & 0x0F;
var mask = (message[1] & 0x80);
var length = (message[1] & 0x7F);
var nextByte = 2;
if (length === 126) {// length = next 2 bytes
    nextByte += 2;
} else if (length === 127){// length = next 8 bytes
    nextByte += 8;
}

var maskingKey = null;
if (mask){
    maskingKey = message.slice(nextByte, nextByte + 4);
    nextByte += 4;
}

var payload = message.slice(nextByte, nextByte + length);

if (maskingKey){
    for (var i = 0; i < payload.length; i++){
        payload[i] = payload[i] ^ maskingKey[i % 4];
    }
}
return payload.toString().split("\n")[0];

}

1 个答案:

答案 0 :(得分:0)

您的函数decodeWebStream会改变输入变量d。这可能与代码中其他地方的错误相结合,对数据进行双重编码可能会导致decodeWebStream的第二次调用,为您提供正确的值(但不是第一个或第三个)。