2011-02-04 87 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

相關問題