2019-2-22-《学习ES6 , 模版符出错~》

2019-02-28 15:04发布

问题:

 

 1 let str1 = "Apple";
 2 let str2 = "Banana";
 3 
 4 let finalStr = showTpl`我今天要吃的东西是${str1}和${str2}。`
 5 
 6 
 7 function showTpl(strings, ...values){
 8    let result = '';
 9    for(var i = 0, l = strings.length; i < l; i++){
10 
11     result += strings[i];
12     result += values[i];
13   }
14 
15   result += strings[strings.length-1];
16   return result;
17 
18 };
19 
20 console.log(finalStr);
21 
22 //我今天要吃的东西是Apple和Banana。undefined。

回答1:

方法名后面直接跟字符串是什么语法?

 showTpl `我今天要吃的东西是${str1}和${str2}。`

求题主科普,谢谢啦



回答2:

strings.length === values.length + 1

所以你在拼接的时候应该注意 values 下标访问越界



回答3:

for(var i = 0, l = strings.length; i < l; i++){
result += strings[i];
result += values[i]; // 这里出错了,因为 i < strings.length,values.length小于strings.length,因此出现undefined
}

本人最近建立了开源项目usuallyjs,非常欢迎楼主一起交流,github地址:https://github.com/JofunLiang/usuallyjs,别忘了start哦.