2011-02-04 56 views
0

我需要在运行时评估字符串中的表达式。不知道如何在Flex中实现这一点。我的要求如下如何评估字符串中的表达式?

var test:String = "myparams.id=10" ; 
//test will be a string populated at runtime. 
// I need to treat it as an expression and evaluate it at runtime 

if(test) 

{ 

// do something 

} 

else 

{ 
//do something 
} 

是否有可能做这样的动作脚本3?

我相信eval函数早些时候允许这个,但现在它已经贬值?

问候 阿帕娜

回答

1

你可以尝试这样的事情:

var nameValuePairs : Array = test.split('='); 
var variableName : String = nameValuePairs[0]; 
var variableValue : String = nameValuePairs[1]; 

但最好避免这样的解析,如果你可以使用XML或JSON或别的东西。

0

丹尼尔是绝对正确的,你应该避免使用这一点,但如果你有,它的工作是这样的:

private var myId : Number = 10; 
public function StringTest() 
{ 
    var myTestString : String = "myId=10"; 
    var array : Array = myTestString.split("="); 
    if(this[array[0]] == array[1]) 
    { 
     trace("variable " + array[0] + " equals " + array[1]); 
    } 
} 

如果你想比较数组[0]数组[1]它将比较字符串,但使用这个[array [0]]将在你的函数范围内寻找一个带有这个标识符的变量。注意,如果找不到变量,它会抛出一个ReferenceError。所以你可能想把它放到一个try {..} catch(error:ReferenceError){...}语句中。

-1
var myparams.id=0; 

// ... 
// ... 
// ... 

var test:String = "myparams.id=10";<br> 
setTimeout(test, 0); 
+1

-1 - 问题是ActionScript,而不是JavaScript。尽管ActionScript确实有它自己的[flash.utils.setTimeout](http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/package.html#setTimeout()),不像JS版本,它需要一个函数类型的参数,而不是一个字符串。因此,您仍然必须将字符串解析为表达式,这引发了问题。 – merv 2011-11-05 18:17:58

相关问题