Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 控制台日志在每个字符之间添加空格_Javascript - Fatal编程技术网

Javascript 控制台日志在每个字符之间添加空格

Javascript 控制台日志在每个字符之间添加空格,javascript,Javascript,我想有一个控制台日志记录发送到服务器的每个套接字消息,所以我很快包装了socket.io的socket.emit函数 var self = this; this.socket = io.connect(); this.socket._emit = this.socket.emit; this.socket.emit = function(){ console.log(...arguments[0]); self.socket._e

我想有一个控制台日志记录发送到服务器的每个套接字消息,所以我很快包装了
socket.io
socket.emit
函数

    var self = this;
    this.socket = io.connect();

    this.socket._emit = this.socket.emit;
    this.socket.emit = function(){
        console.log(...arguments[0]);
        self.socket._emit(...arguments);
    };
除了一些奇怪的控制台日志打印外,它工作正常。这发生在Chrome和Firefox上。发生了什么事


我确实通过使用
参数[0]
而不是
…参数[0]
解决了这个问题,但我仍然很好奇。

当用作函数调用的参数时,会将单个字符串值分解为每个字符的单独参数。下面的例子应该说明这一点

var str=“abc”;
console.log(str);//abc
console.log(…str);//a、b、c
console.log(“a”、“b”、“c”);//a、b、c
变量ary=[…str];
console.log(ari);//(3) [“a”、“b”、“c”]
showArgs(…str);
函数showArgs(x,y,z){
console.log(x);//a
console.log(y);//b
console.log(z);/c

}
我怀疑您有一个编码为UTF-16的字符串。您能进一步解释一下这在上下文中的含义吗?我的猜测是错误的。我不知道这件事。完整答案即将到来。我使用
传递到原始函数的实现,并使用它打印参数,而不考虑它。这仍然令人惊讶,因为将鼠标悬停在
对象上会将字符串显示为字符串。