JavaScript函数内部如何根据字符串调用一个内部函数呢?

1.如果是调用全局函数可以用eval,这个不推荐

2.如果是调用全局函数还可以这样

var f = "test";
window[f]();

3.于是我想到应该可以这样,可是报错

<script>
function f()
{
    function a()
    {
        console.log("a");
    }
    var m = "a";
    var that = this;
    that[m]();
}

f();
</script>

该如何写呢?

阅读 204
评论
    1 个回答
    • 2.1k

    这个问题的关键在于,内部函数a是挂载到哪里的?
    你可以将你的代码改为

    function f()
    {
        this.a = function ()
        {
            console.log("a");
        }
        var m = "a";
        var that = this;
        that[m]();
    }
    
    f();