3

,이 작업을 수행 할 수 있습니다결합 ES6 유니 코드 리터럴

console.log(`\u{4eb0}`); 

을 마찬가지로, 나는 템플릿에 변수를 보간 할 경우 리터럴 문자열, 나는이 작업을 수행 할 수 있습니다

let x = "48b0"; 
console.log(`The character code is ${ x.toUpperCase() }.`); 

그러나, 내가, 목록을 인쇄 예를 들어, 40 개 연속 유니 코드 한자하는 두 가지를 결합 할 수 없습니다 것으로 보인다. 작동하지 않습니다.

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

그래서 가능한지 묻습니다.

답변

5

당신은 번호를 받아 문자를 반환 String.fromCodePoint()를 사용해야합니다. 음 ... 그것은 더 이상 리터럴이 아니다 ... 때문에

당신은 리터럴 함께 할 수 없습니다. 리터럴이 절차의 결과로 생산 될 수없는, 그들은 리터럴로 작성해야합니다. 캐릭터가 하나의 코드 포인트보다 더 많은 경우 당신이 그들에게 당신이 진짜 문자 그대로의 '\의 u`와 분리 할 쉼표로 구분 통과 _can_ 것을 언급

+2

가치. 그래서 "\ uD834 \ uDF06는"String.fromCodePoint (0xD834, 0xDF06)''되고 있지만 리터럴과는 달리 당신은' "\ u1D306은"'분명히하지 않는 경우'String.fromCodePoint (0x1D306가)'도 작동 것이기 때문에 필요 없어 . –

관련 문제