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

时间:2010-08-19 18:26:18

标签: javascript closures

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

考虑到以下代码:

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

我希望对变量url.secondaryNavId进行评估,所以我真正想要的就是这样处理:

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

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

2 个答案:

答案 0 :(得分:5)

请勿使用eval

您可以按如下方式使用self-invoking functionclosures

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

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

答案 1 :(得分:-1)

有JavaScript eval()函数。