有没有办法在Rest参数的输出中保留空格?

时间:2019-01-13 12:28:46

标签: javascript

带有Rest参数的函数的输出中未保留空格

我找到了一种解决方法,只需用一个初始空格声明参数即可。 但是,很高兴知道我是否丢失了某些东西,或者有更好的方法来解决这个问题,或者也许就是这样。

function myFriends(greeting, ...friends) {
  console.log(`${greeting}, ${friends}`);
  console.log(greeting + ", " + friends);
}

myFriends("Hello!", "Ryan", "Zoe", "Jack");
myFriends("Hello!", "Ryan", " Zoe", " Jack"); //work-around

1 个答案:

答案 0 :(得分:1)

friends是一个数组。当您执行${friends}(或+ friends)时,解释器会尝试通过调用数组的toString方法将其转换为字符串,以便可以将其串联。这会以逗号(且没有空格)连接所有项目。

用逗号和空格显式连接起来很简单:

function myFriends(greeting, ...friends) {
  const friendsStr = friends.join(', ');
  console.log(`${greeting}, ${friendsStr}`);
  console.log(greeting + ", " + friendsStr);
}

myFriends("Hello!", "Ryan", "Zoe", "Jack");

仅出于说明目的,您还可以覆盖toString方法(但不要在实际代码中这样做):

Array.prototype.toString = function() {
  return this.join(', ');
};
function myFriends(greeting, ...friends) {
  console.log(`${greeting}, ${friends}`);
  console.log(greeting + ", " + friends);
}

myFriends("Hello!", "Ryan", "Zoe", "Jack");