将ES6 Unicode字面量与ES6模板字面量相结合

6
如果我想在ES6/ES2015 javascript中打印一个Unicode汉字,我可以这样做:
console.log(`\u{4eb0}`);

同样地,如果我想要把一个变量插入到模板字符串中,我可以这样做:
let x = "48b0";
console.log(`The character code is ${ x.toUpperCase() }.`);

然而,似乎我无法将这两者结合起来打印一个包含40个连续的Unicode中文字符的列表。以下代码不起作用:

for (let i = 0, firstCharCode = parseInt("4eb0", 16); i < 40; ++i) {
    let hexCharCode = (firstCharCode + i).toString(16);
    console.log(`\u{${ hexCharCode }}`); // generates SyntaxError
}

所以我想问是否有可能实现这个。

1个回答

8
您需要使用String.fromCodePoint(),它接受一个数值并返回一个字符。
您不能使用字面量,因为...好吧...它不再是字面量了。字面量不能作为过程的结果产生,必须以字面量的形式编写。

2
值得一提的是,如果您的字符由多个代码点组成,则可以使用逗号将它们分开传递,其中在实际文字中用\u分隔。因此,"\uD834\uDF06" 变成了 String.fromCodePoint(0xD834, 0xDF06),但与文字不同,您不必这样做,因为 String.fromCodePoint(0x1D306) 也可以工作,而 "\u1D306" 显然不行。 - Benjamin Gruenbaum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接