Javascript Node.js bug?功能';s的返回值在存储为变量时发生更改

Javascript Node.js bug?功能';s的返回值在存储为变量时发生更改,javascript,node.js,variables,Javascript,Node.js,Variables,好吧,我不会说太多。。。 我一直在使用node.js作为WebSocket服务器,但我遇到了这个问题: (预期输出为:“在此处工作”) 以下是执行此操作的行: 更多图片: (预期输出为:“工作”) 我的意思是,当值存储为变量时,它会改变?? 这是nodeJS或v8引擎中的某种缺陷吗?? (可能是99%我错了;) 以下是函数的源代码: websocket.prototype.decodeWebSocketMessage = function decodeWebSocketMessage(nat

好吧,我不会说太多。。。 我一直在使用node.js作为WebSocket服务器,但我遇到了这个问题:

(预期输出为:“在此处工作”)

以下是执行此操作的行:

更多图片: (预期输出为:“工作”)

我的意思是,当值存储为变量时,它会改变?? 这是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];
websocket.prototype.decodeWebSocketMessage=函数decodeWebSocketMessage(本机数据){
var message=native_data;//data.slice(开始,结束);
var FIN=(消息[0]&0x80);
var RSV1=(消息[0]&0x40);
var RSV2=(消息[0]&0x20);
var RSV3=(消息[0]&0x10);
var操作码=消息[0]&0x0F;
变量掩码=(消息[1]&0x80);
变量长度=(消息[1]&0x7F);
var nextByte=2;
如果(长度==126){//length=next 2字节
下一字节+=2;
}如果(长度===127){//length=下一个8字节,则为else
下一字节+=8;
}
var maskingKey=null;
如果(掩码){
maskingKey=message.slice(nextByte,nextByte+4);
下一字节+=4;
}
var payload=message.slice(nextByte,nextByte+length);
if(屏蔽键){
对于(变量i=0;i

}

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

请在您的问题中包含所有相关代码。另外,发布您的代码,而不是图像链接,我们无法真正帮助您使用ImagesName thing as.toString(),没有任何更改鉴于信息稀疏,很难为您提供帮助,但作为建议,因为您认为自己在V8或Node中发现了一个bug:如果您正在寻求帮助,请创建一个复制问题的代码,并将其发布在此处。当我这样做的时候,我甚至经常在这个过程中发现自己的问题。@DanielKhan,我仍然不知道这是否是一个错误,或者可能是我犯了一些错误,但我希望得到帮助,让我知道到底发生了什么!谢谢你的帮助