ES6字符串模板化

3

我对ES6非常陌生,想知道是否有一种更简单的方法来返回字符串而不必尝试弄清楚顺序。我喜欢这种方法,但是我发现对于长字符串来说,实在是太痛苦了。请问是否有人可以指点一下我?此外,是否可以为这个函数使用箭头函数?

function text(strings, ...values){
        if(values[3]>200){
          values[2] = "realy fast up too"
        }else{
          values[2] = "super slow up too"
        }
        return `${strings[0]}${values[0]} ${values[1]}${strings[1]}${strings[2]}${values[2]} ${values[3]}${strings[3]}${strings[4]}${strings[5]}${values[4]}`;
      }

      let sentance = text`Your ${this.color} ${this.cartype}can drive ${""} ${this.speed}Km/H while going ${this.carsound(carS)}`;

我尝试使用箭头函数,像下面这样,但是我在第16行(你看到的第一行)遇到了编译错误(意外标记)

text(strings, ...values)=>{
        if(values[3]>200){
          values[2] = "realy fast up too"
        }else{
          values[2] = "super slow up too"
        }
        return `${strings[0]}${values[0]} ${values[1]}${strings[1]}${strings[2]}${values[2]} ${values[3]}${strings[3]}${strings[4]}${strings[5]}${values[4]}`;
      } 

1
没有必要使用箭头函数来完成这个任务。我建议使用循环。 - Michał Perłakowski
对于箭头函数,请尝试使用 let text = (strings,...values) => ... - MaxArt
非常感谢大家,你们太棒了。非常感谢你们的帮助。 - EugeneDeWaal
1个回答

1
如果使用jQuery,我会这样做:

let text = (strings, ...values) {
    // code
    return $.map(strings, function(v, i){ return v + values[i]; }).join(' ');
}

箭头函数是一种匿名函数,但你不能像使用普通函数那样使用它。你需要将它赋值给一个变量,如下所示;
let text = (strings, ...values)=> { ... }

非常感谢 Rafael,那个方法太棒了。我会阅读 jQuery 的 .map 函数,以深入了解它的工作原理。但再次感谢。 - EugeneDeWaal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接