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

时间:2017-05-06 21:53:24

标签: 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._emit(...arguments);
    };

除了一些奇怪的控制台日志打印外,它工作正常。这种情况发生在Chrome和Firefox上。发生了什么事?

enter image description here

我使用arguments[0]代替...arguments[0]解决了这个问题,但我还是很好奇......

1 个答案:

答案 0 :(得分:3)

spread syntax当用作函数调用的参数时,会将单个字符串值分解为每个字符的单独参数。下面的例子应该说清楚。



var str = "abc";
console.log(str);         // abc
console.log(...str);      // a b c
console.log("a","b","c"); // a b c

var ary = [...str];
console.log(ary);         // (3) ["a", "b", "c"]

showArgs(...str);
function showArgs(x, y, z){
  console.log(x); // a
  console.log(y); // b
  console.log(z); // c
}




您为什么使用console.log(...arguments[0])?您希望/期望使用...在那里发生什么?