對寫C/C++的人來說,javascript和php都有一個神奇的功能,就是動態變數名稱。在javascript裡,不管是一般動態變數,或者物件裡的成員是動態變數,都可以使用eval()方法存取(PHP我要回去翻翻以前的code)。
有時候會有一個需求,想在某種情況代入變數Value_A,某些時候代入變數Value_B,那可能會寫:
var output = '';
if (status=='A'){
output = Value_A
}
if else(status=='B'){
output = Value_B
}
alert(output);
但若是情況有100種,豈不是要寫100個判斷式處理
這時,可以使用eval()方法來處理:
var output = eval('Value_' + status);
alert(output);
上述方式,將可在status為A時,取到Value_A的值,status為GG時,取到Value_GG的值,大大使程式碼更加靈活。
eval()也就是將函式內的內容組合完成後,以JavaScript執行,所以能夠產生許多巧妙的變化,常被舉的例子是:
var n=2;
var b=3,c=4;
eval('a'+n+'=b*c');
上式會得出a2變數為12。
補充動態變數的寫法:
在全域宣告一個變數,它會變成window的子物件,我們把該變數當作特性去讀寫
過程:
var i = "0";
this['str'+i] = 100;
結果:
console.log(str0); //會回傳100
function內也是一樣
function func(){
var a = '123';
for(i=0;i<=5;i++){
this['a'+i] = i;
console.log(this['a'+i]);
}
}
func();
//會印出6次結果,分別是0~5
REF
https://stackoverflow.com/questions/5117127/use-dynamic-variable-names-in-javascript
沒有留言:
張貼留言