js字符串定義爲變量名,通過字符串查找變量

最近在寫js的時候碰到了難題,我又一個頁面需要生成很多的變量。但是變量的名稱是根據參數的不同而區分的。

1、字符串定義爲變量名

例如可能需要生成的變量名字 url_1,url_2,url_3… (後面的數字是根據參數來的)。 所以我的函數名 應該由 var ‘變量名’ = “url_”+num; 生成函數名 但這問題就來了。

初始化變量時等號左邊是不允許是表達式的。
所以 var "url_"+num = " http://www.1234.com"; 這肯定是錯誤的。後來問了度娘後才知道。可以使用 window[字符串變量名] = 100 這種方式來定義變量。看代碼

function createVariable(num){
    var name = "url_"+num;   //生成函數名
    window[name] = 100;
    //注意看中括號裏的內容加引號和不加引號的區別
    //加引號代表name爲字符串,而不是上面的name變量'url_*'
    window['name'] = 200;   
    }

    create_variable(2);
    alert(url_2); // 100;
    alert(name); //200;

window用中括號的方式定義 變量時,中括號裏的內容應該是字符串。如果是一個變量的話,他就會解析這個變量找到具體的值。

2、通過字符串查找變量

這種情況是我已經定義好了多個類似“url_1,url_2,url_3……”的有規律變量,但是當動態引用變量的時候獲取變量的值是個問題

//使用freemarker遍歷集合批量生成變量  
<#list audioUrlList?if_exists as item>
    var audioUrl_${item_index}="${item}";
</#list>

根據指定的角標調用時可以用

function getUrl(index){
    var variableName = "audioUrl_"+index;
    return eval(variableName);
}

eval() 函數可計算某個字符串,並執行其中的的 JavaScript 代碼

附:其他方式解決 字符串定義爲變量名

1、用對象的形式

var object = {};
    for(var i=0;i<10;i++){
        object['var_'+i]='';
    }

2、用數組的形式

var arr=[];
for(var i=0;i<xxx.length;i++ )
{
    arr[i]=
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章