Socket.io socketio ip:为什么ipfix变量/用户名没有改变 io.on('connection',函数(socket){ var ip=socket.request.connection.remoteAddress; var ipfix=ip;//复制了ip,因为我认为它可能是一个常量 对于(var g=0;g

Socket.io socketio ip:为什么ipfix变量/用户名没有改变 io.on('connection',函数(socket){ var ip=socket.request.connection.remoteAddress; var ipfix=ip;//复制了ip,因为我认为它可能是一个常量 对于(var g=0;g,socket.io,Socket.io,其目的是从ip中删除点、冒号和“f” 对我来说,这似乎非常合理,但每次我运行它时,它都会打印出用户名,而不会更改在IP中看到的值,即使IP被复制到ipfix并进行迭代。我发现了一个修复,与C不同,javascript字符串是不可变的-解决方案是使用ipfix=IP.split(“”); io.on('connection', function(socket){ var ip = socket.request.connection.remoteAddress; var ipfix = ip;

其目的是从ip中删除点、冒号和“f”

对我来说,这似乎非常合理,但每次我运行它时,它都会打印出用户名,而不会更改在IP中看到的值,即使IP被复制到ipfix并进行迭代。

我发现了一个修复,与C不同,javascript字符串是不可变的-解决方案是使用
ipfix=IP.split(“”);
io.on('connection', function(socket){
var ip = socket.request.connection.remoteAddress;
var ipfix = ip;    // made a copy of ip cause thought it may be a constant
for (var g = 0; g < ipfix.length; g++)
    {
        if (ipfix[g] == 'f' || ipfix[g] == ':')
            {
                ipfix[g] = '';
                console.log("changed to nothing"); // logs to console
            }
        if (ipfix[g] == '.')
            {
                ipfix[g] = '0';
                console.log("changed to zero"); // logs to console
            }
    }
var username = 'User#' + ipfix[9] + ipfix[8] + ipfix[11] + ipfix[13];
console.log(username); // Logs, no change to dots / f / :
}