带有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
答案 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");