Yes of course, still requires 1.Destructuring, and making a function for
each type of string to return. Defeats the purpose.

I'd have to make different functions for each template:

```JS
const yearTemplate = ({ year }) => `This year is ${year}`;

const ageTemplate = ({ age}) => `I'm ${age} yrs old`;
```

Compare to:

```JS
let yearSentence = String.substitute({ year: 2015}, `This year is ${year}`);
let ageSentence = String.substitute({ age:100 }, `I'm ${age} yrs old`);
```

On Wed, Aug 12, 2015 at 10:19 AM, Claude Pache <claude.pa...@gmail.com>
wrote:

>
> > Le 12 août 2015 à 15:41, Edwin Reynoso <eor...@gmail.com> a écrit :
> >
> > Could we make the following possible, I can't seem to think of a way to
> do it, since template literals are evaluated with the current scope, also
> tried with `eval` but shouldn't even use that at all:
> >
> > ```JS
> > String.substitute( { year: 2015 }, `This year is ${year}` ); // Returns
> "This year is 2015"
> > ```
> >
> > Yes I'm aware I could do the following:
> >
> > ```JS
> > var obj = { year:2015 }
> >
> > `This year is ${obj.year}`
> > ```
> >
> > The point is to get rid of the part where I reference `obj` all the time.
> >
> > I could just use destructuring:
> >
> > ```JS
> > var { year } = { year: 2015 }
> >
> > `This year is ${year}`
> > ```
> >
> > So yes destructuring takes care of most of this just fine, but the point
> is to have a template literal evaluate as a pass reference and not right
> away.
> >
> > You can't make your own function and pass in a template literal that's
> not evaluated when passed as a reference, I'm not sure if anyone will
> actually want this but me. Please let me know. Thanks
>
> There is a general trick for deferring evaluation (of a template literal
> or of anything else): enclosing it in a function.
>
> ```js
> const myTemplate = ({ year }) => `This year is ${year}`
>
> myTemplate({ year: 2015 })
> ```
>
> —Claude
>
>
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to