我们可以在模板文字(模板字符串)中使用 JS concat() 吗?

Can we use JS concat() inside Template literals (Template strings)?

我正在尝试使用像 -

这样的模板字符串创建 URL
a = {
    link: {
        pathname: `${url.split('?')[0]}${userId}/items?userType=${userId}}`
    },
};

上面的代码片段工作得非常好,下面的代码片段也是如此。 但是我们是否应该像下面的代码片段那样在模板字符串中使用 concat()?

a = {
    link: {
        pathname: `${url
            .split('?')[0]
            .concat(`${userId}/items?userType=${userId}`)}`,
    },
};

为什么我使用 concat() 因为在我的例子中,我启用的 linting 设置在第一个错误中抛出错误,因为它应该写成两行,但它需要换行或 space 作为我们给予,这对我们的情况不利,因为我们正在创建 URL.

如果不是,为什么? 只是好奇。

给你两个答案:

  1. 替换(${...})的内容可以是任何表达式。在那里做方法调用就可以了。

  2. concat 在这种特殊情况下似乎是一个奇怪的选择,因为没有必要。因此,从风格的角度来看,我会使用第一个版本。但这是一种风格,如果你愿意,你 可以 使用 concat。请注意 一旦你这样做了,整个表达式已经产生了你想要的字符串,你根本不需要模板文字。

所以我要么使用你的原件:

a = {
    link: {
        pathname: `${url.split('?')[0]}${userId}/items?userType=${userId}}`
    },
};

或者如果你喜欢 concat:

a = {
    link: {
        pathname: url
            .split('?')[0]
            .concat(`${userId}/items?userType=${userId}`)},
    },
};