动态执行JS-把字符串当做代码去执行
使用 eval 将字符串当做代码来执行
function zhiXing(strCode){
eval(strCode)
}
zhiXing("console.log('hello')")
在控制台会输出: hello
eval 的简单介绍
1,eval是同步代码
2,eval()执行代码时,读取变量是当前作用域;
他会先去找当前作用域中有没有这个值;如果有就获取,如果没有往上一级作用域中去找
使用 eval 将字符串当做代码来执行-当前作用域
let a =3
function zhiXing(strCode){
eval(strCode)
}
zhiXing("console.log('hello',a)")
// 输出的是3
解释: 他会先去找当前作用域中有没有这个值; 如果有就获取,如果没有往上一级作用域中去找
setTimeout 的简单介绍
1, setTimeout(a, number) 如果第一个参数接受的是字符串,会把字符串当做代码来执行;异步的
2,setTimeout(a, number)执行代码时,读取变量是全局作用域;
使用 setTimeout 将字符串当做代码来执行
let a =10
function zhiXing(strCode){
let a = 4
setTimeout(strCode,0)
}
zhiXing("console.log('hello',a)")
// 输出的是10;因为读取变量时,是全局作用域
使用 setTimeout 将字符串当做代码来执行-全局作用域
function zhiXing(strCode){
let a = 10
setTimeout(strCode,0)
}
zhiXing("console.log('hello',a)")
// 报错,a is not defined 因为:setTimeout执行代码是全局作用域,而不是当前作用域
创建script来执行代码-同步的-读取变量时是全局作用域
let a =10
function zhiXing(strCode){
let script = document.createElement('script')
script.innerHTML = strCode
document.body.appendChild(script)
}
zhiXing("console.log('hello',a)")
创建script来执行代码,同步执行,读取变量时是全局作用域
通过new Function 来执行代码 - 同步的 - 读取变量时是全局作用域
let a = 100
function zhiXing(strCode){
let fn =new Function(strCode)
fn()
}
zhiXing("console.log('hello',a)")
// 输出100
通过new Function 来执行代码,同步执行,读取变量时是全局作用域
创建 script 来执行代码与 new Function 的区别
script 会创建一个标签, new Function不会;
他们两个推荐使用 new Function;
遇见问题,这是你成长的机会,如果你能够解决,这就是收获。
作者:晚来南风晚相识
出处:https://www.cnblogs.com/IwishIcould/
本文版权归作者所有,欢迎转载,未经作者同意须保留此段声明,在文章页面明显位置给出原文连接
如果文中有什么错误,欢迎指出。以免更多的人被误导。
出处:https://www.cnblogs.com/IwishIcould/
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,或者关注博主,在此感谢!
万水千山总是情,打赏5毛买辣条行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主(っ•̀ω•́)っ✎⁾⁾!
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!

支付宝

微信
如果文中有什么错误,欢迎指出。以免更多的人被误导。
分类:
js进阶
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY