使用动态名称调用嵌套函数

2023-12-20

考虑这段代码:

(function a() {
    // Nested function
    function b() {
        console.log("Works!");
    }

    b();
})();

这段代码可以工作,但是(理论上)可以调用b()如果名称位于字符串内(即动态)?

If b()将在全局范围内声明,我们可以使用window[stringContainingName]();。这种情况有可能吗?

这只是一个理论问题!我知道这样的代码是糟糕的设计。


这种情况有可能吗?

只有通过使b函数对象的属性:

(function a(name) {
    var fns = {
        b: function b() {
            console.log("Works!");
        }
    };

    // possibly secure by `if (fns.hasOwnProperty(name))`
    fns[name]();
})("b");

您需要事先知道函数的名称。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用动态名称调用嵌套函数 的相关文章

随机推荐