Appearance
动态执行JS代码
四种办法:
- eval, 同步执行, 就近原则
- setTimeout, 异步执行
- 创建script标签, 同步执行
- new Function, 同步执行
演示——eval
javascript
// eval
const a = 1;
const exect = () => {
const a = 100;
const str = 'console.log("a",a)'
eval(str);
}
exect()eval里的变量会就近获取值
演示——setTimeout
javascript
const a = 1;
const exect = () => {
const a = 100;
const str = 'console.log("a",a)'
setTimeout(str,0)
// a 1
}
exect()演示——创建script标签
javascript
const a = 1;
const exect = () => {
const a = 100;
const str = 'console.log("a",a)'
const dynamicScript = document.createElement('script');
dynamicScript.innerHTML = str;
document.body.appendChild(dynamicScript)
// a 1
}
exect()演示——new Function
javascript
const a = 1;
const exect = () => {
const a = 100;
const str = 'console.log("a",a)'
const newFunc = new Function(str)
newFunc()
// a 1
}
exect()