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