이번 문제는 검색기능에서 태그(<,>)와 싱글 쿼터('), 더블 쿼터("), 백틱(`)이 유니코드로 변환된다.
"'\<>을 입력하면
유니코드로 변환되는걸 볼 수 있다.
또한 message 변수는 백틱(`)으로 감싸져 있어 이를 이용하면 alert함수를 호출할 수 있다.
이번 문제는 혹시..?하고 넣어봤던 게 정답이어서 문제를 풀고 난 후 방법을 찾았던 문제다.ㅎㅎ
우선 백틱에 대해 알아보기전 먼저 알아야 될 것이 템플릿 리터럴이다.
탬플릿 리터럴이란?
자바스크립트에서 쓰이는 ES6부터 새로 도입된 문자열 표기법이다.
문자열 생성시 따옴표 대신 사용되는 게 백틱(`)이다.
ex) var str_01 = `hello world`;
이런 탬플릿 리터럴에 기능이 크게 두가지가 있는데
1. 줄바꿈
위에 사진을 보면 줄 바꿈이 자유로운 것을 알 수 있다.
평소 우리가 문자열을 입력할 때 줄 바꿈을 하려면 개행문자(\n)를 사용하여 바꿨어야 했다.
ex) var str_01 = "Hi! \n\t It's me! \n\t\t\t JavaScript! \n So Cool!";
2. 표현식
기존에는 + 연산자를 이용해 각각 연결시켜 줬어야 됐다면
위 사진과 같이 변수나 연산을 ${}을 이용해 직접 삽입할 수 있다.
여기서 우리가 이용할 것은 2번이다.
${} 안에 넣어 사용할 수 있는 것은 변수나 연산뿐 아니라 함수도 가능하다.
정확한 정의는 아니지만 return값 즉, 반환하는 값이 있으면 사용할 수 있다.
그럼 문제에서 변수가 백틱(`)으로 선언되어 있으니 그 안에 ${alert(0)}을 넣으면 어떻게 될까?
alert함수가 호출되는 걸 볼 수 있다.