如何评估变量以在JavaScript中访问其运行时值?

cra*_*eum 2 javascript closures

好的,我不知道如何在没有显示的情况下实际问这个问题.(还解释了为什么我无法弄清楚如何在Google上搜索它.)

鉴于代码如下:

dijit.byId('leftNavigationPane').onLoad = function(){setSecondaryNav(url.secondaryNavId);};

我想要对变量url.secondaryNavId进行评估,所以我真正想要的是对它进行如下处理:

dijit.byId('leftNavigationPane').onLoad = function(){ setSecondaryNav('item1'); };

我相信可能有更好的方法来做到这一点,所以请随意提出建议.

pal*_*wim 5

不要用eval!

您可以使用自调用函数闭包,如下所示:

dijit.byId('leftNavigationPane').onLoad = function(id){
    return function(){ setSecondaryNav(id); };
}(url.secondaryNavId); 
Run Code Online (Sandbox Code Playgroud)

这将立即执行外部匿名函数(在运行时),传递url.secondaryNavId参数,然后创建一个内部匿名函数将使用的闭包(因此id将始终包含url.secondaryNavId属性的赋值时间值).