typescript 动态加载-Javascript的动态逻辑加载(代码的动态执行)

2023-09-02 0 9,707 百度已收录

Javascript 使用 newFunction 方法和 eval 技术动态执行代码。

新功能

Function 构造函数生成的函数是在全局范围内创建的。

typescript 动态加载-Javascript的动态逻辑加载(代码的动态执行)

请看nodejs环境下的Demo:

global.n = 1;
function f(){
    var n = 2;
    var e = new Function("return n;");
    return e;
}
function f2(){
    var n = 2;
    function e(){
        return n;
    }
    return e;
}
console.log(f()());    //  1
console.log(f2()());   //  2

评估

typescript 动态加载-Javascript的动态逻辑加载(代码的动态执行)

eval函数的执行过程:

1.搭建新的执行环境。

3、执行环境中的this指向当前执行环境中的this。

typescript 动态加载-Javascript的动态逻辑加载(代码的动态执行)

3、执行环境中的作用域链指向当前执行环境的作用域链。

4. 正常执行代码。

请看nodejs环境下的Demo:

typescript 动态加载-Javascript的动态逻辑加载(代码的动态执行)

global.n = 1;
function f2(){
    var n = 2;
    function e(){
        return n;
    }
    return e;
}
var evaluedFn = eval("("+f2.toString()+")");
var nativeFn = evaluedFn();
console.log(nativeFn());   //  2

实现要求的方法顺序

函数 > 动态逻辑加载 > DSL

尹老师的DSL使用指南:

尽一切可能阻止 DSL 的创建,因为它会造成严重的理解、沟通和学习曲线问题typescript 动态加载,从而严重提高团队的生产力。 如果这个DSL被用户使用,将会严重影响用户体验,增加产品的可用性。 大多数DSL需要解决的问题只是“动态逻辑加载”。 为此,您可以完全使用现有的语言(例如JavaScript),或者采取其部分结构并动态调用其类库(编译器)来实现此目标,而无需创建新的DSL。 大多数时候,编写库代码并将所需的功能变成函数肯定可以解决问题。 如果真的到了创建DSL的时候了,并且没有DSL就无法解决问题typescript 动态加载,那么你就可以开始设计DSL了。 但DSL必须由编程语言专家来完成,否则仍然可能给产品和团队带来严重的后果。

参考:

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 typescript typescript 动态加载-Javascript的动态逻辑加载(代码的动态执行) https://www.wkzy.net/game/188578.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务