fn함수 리턴 값 순서에 관한 질문 입니다.
203
投稿した質問数 8
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 되면 안되더라구요... 왜 그럴까요?
回答 1
0
함수로 전달되는 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

