> 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