> 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