inflearn logo
강의

講義

知識共有

モダンなJavaScript開発のためのES6コース

Tagged Template literals

fn함수 리턴 값 순서에 관한 질문 입니다.

203

mky980027

投稿した質問数 8

1

fn함수 리턴값으로 tags[0] + name + tags[1] + items + tags[2]; 이렇게 리턴 하셨는데

다음과 같이 리턴값을 매치 시키니깐 items + tags[2]가 왜 tags[2] + items 이렇게 되면 안되는지를 잘 모르겠습니다.

tags[0] + name => Welcome ${data[1].name}!!

tags[1] =>

주문가능항목

items + tags[2] => ${data[1].items} ??? <-- 이부분 tags[2] + items 되면 안되더라구요... 왜 그럴까요?

javascript es6

回答 1

0

James Jeon

함수로 전달되는 tags 매개변수는 "${v.name}", "${v.items}" 같이 "${ }" 부분을 기준으로 나뉘어진 배열로 전달됩니다.

따라서, fn`<h2>welcome ${v.name} !!</h2><h4>주문가능항목</h4><div>${v.items}</div>`

['<h2>welcome ' , ' !!</h2><h4>주문가능항목</h4><div>', '</div>'] 같은 tags 배열이 전달됩니다.

순차적으로 각각 tags[0], tags[1], tags[2] 되는 것이구요.

"tags[0] + name + tags[1] + items + tags[2]"

'<h2>welcome ' + name + ' !!</h2><h4>주문가능항목</h4><div>' + items + '</div>' 처럼 조립이 되어

원하는 HTML 구조를 형성할 있습니다.

<h2>welcome ${v.name} !!</h2>
<h4>주문가능항목</h4>
<div>${v.items}</div>

같이 말이죠.

하지만, items tags[2] 순서를 바꾸어 tags[2] + items 반환하면,

겉으로는 정상적으로 보이지만, 실제로 형성된 HTML 구조는 의도와는 다름을 있습니다.

<h2>welcome ${v.name} !!</h2>
<h4>주문가능항목</h4>
<div></div>${v.items}

마지막 줄이 바뀌었음을 있습니다.

다음과 같이 console.log() 함수를 통해 변수를 확인해보면 자세히 있습니다.

const data = [
  {
    name: "coffee-bean",
    order: true,
    items: ['americano', 'milk', 'green-tea']
  },
  {
    name: 'starbucks',
    order: false
  },
  {
    name: 'coffee-king',
    order: true,
    items: ['americano', 'latte']
  }
]

function fn(tags, name, items) {
  if(typeof items === "undefined") {
    items = "<span style='color:red'>주문가능한 상품이 없습니다</span>";
  }
  console.log(tags);
  return tags[0] + name + tags[1] + items + tags[2];
}

data.forEach((v) => {
  let template = fn`<h2>welcome ${v.name} !!</h2>
    <h4>주문가능항목</h4><div>${v.items}</div>`;
  
  console.log(template);
  document.querySelector("#message").innerHTML += template;
});

2022년 기준 웹팩 설정하실 때

0

345

0

로또 구현

0

288

0

선생님, arrow 로 활용해서 스크립트 짜봤는데 왜 안될까요? ㅠㅠㅠ

0

258

0

Cannot get 은 무엇이 문제인걸까요?

0

575

0

작업했습니다.

2

239

0

타입 관련 궁금한 점이 있습니다.

1

256

1

Set 사용 안 한 풀이법

0

231

1

로또

0

253

0

이거 링크 없는거 맞죠?

0

196

0

export default 해도

0

206

0

로또 번호 생성 풀이는 없나요??

2

213

0

예제 오류 입니다.

0

194

0

로또 번호 생성기 소스코드

0

341

0

강의에서 사용하시는 툴이 궁금해요

0

266

1

풀이가 없어서

1

251

0

this 바인딩 질문드립니다~

0

242

1

bundle.js 내용이 index.js와 동일합니다

0

738

4

로또 번호 생성기 풀이

0

269

0

전 html 파일을 만들어서 해결해봤습니다.

0

219

0

newArr에 map으로 묶은 fucntion 인자들은 어디서 받아오는 값인가요?

0

202

0

제 답변 올립니다.

0

234

1

ws.has(arr) 문의 입니다.

4

228

2

로또번호 생성기 풀이

0

158

0

왜 이건 유튜브로 나와요?

0

195

0