The with()
statement is more or less eliminated from modern Javascript. It is not available in strict mode and ES6 modules, TS all that is loaded in strict mode. So what use instead to put unknown variables into a scope?
For example:
function renderTemplateString(template, data) {
let func
with(data) {
func = () => eval('`' + template + '`')
}
try {
return func()
} catch (error) {
return `Error in Template ${template}: ${error} in ${JSON.stringify(data)}`
}
}
console.log(renderTemplateString("foo: ${foo}", {foo: 'bar'}))
Can the same effect (putting all of data
into the scope of eval()
) archived without with?