Javascript的Python等价于当地人()?

在Python中,可以使用内置函数locals()globals()来获取当前范围内所有本地和全局变量的字典。 是否有一些在Javascript中做到这一点的等价方法? 例如,我想要做如下的事情:

var foo = function(){ alert('foo'); };
var bar = function(){ alert('bar'); };

var s = 'foo';
locals()[s](); // alerts 'foo'

这是否可能,或者我应该使用本地对象进行查找?


  • 当地人() - 不。

  • 全局变量() - 是的。

  • window是对全局作用域的引用,例如python中的globals()

    globals()["foo"]
    

    是相同的:

    window["foo"]
    

    那么,我认为js中没有这样的东西。 你总是可以使用eval而不是locals()。 喜欢这个:

    eval(s+"()");
    

    你只需要知道函数foo的存在。

    编辑:

    不要使用eval :)使用:

    var functionName="myFunctionName";
    window[functionName]();
    

    我似乎记得Brendan Eich在最近的播客中对此进行了评论; 如果我记得正确的话,这不会被考虑,因为它增加了不合理的优化限制。 他将它与当地的arguments进行比较,虽然它对可变参数很有用,但它的存在无法通过查看它的定义来猜测函数会触及什么。

    顺便说一句:我相信JS确实支持通过本地参数访问当地人 - 一次快速搜索显示,这已被弃用。

    链接地址: http://www.djcxy.com/p/16985.html

    上一篇: Javascript equivalent of Python's locals()?

    下一篇: git revert <hash> not allowed due to a merge but no