iT邦幫忙

1

JavaScript 動態變數怎麼寫

PHP動態變數可使用以下方式達成
過程:
$i="0";
${"str".$i} = 100;
結果:
$str0 = 100;

那JavaScript是否有辨法做到呢?
已試過eval()無法
還煩請大大們協助,在此先感謝了。

weiclin iT邦高手 6 級 ‧ 2018-03-09 20:48:32 檢舉
https://stackoverflow.com/questions/5117127/use-dynamic-variable-names-in-javascript
感謝協助,有看到一個很符合的狀況,明天再測試了,先謝過了!!!

1 個回答

1
神Q超人
iT邦新手 4 級 ‧ 2018-03-09 22:21:17

weiclin大大給的網址內有標明用法了~~
我趁回答問題自己也來實做看看/images/emoticon/emoticon39.gif

//在全域宣告一個變數,他會跑進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
看更多先前的回應...收起先前的回應...

嗯嗯,weiclin大大給的連結超實用的,我搜了一整天都沒看到這篇!

weiclin iT邦高手 6 級 ‧ 2018-03-10 04:51:03 檢舉

稍微提醒一下, function 裡面的 this 會因為用法而不同, 如果你沒取到預期的變數, 看是不是這個原因:

function func() {
  console.log(this.constructor.name);
}

// this === window
func();

// this === func
var obj = new func();
froce iT邦新手 1 級 ‧ 2018-03-10 09:54:03 檢舉

順便問一下,我知道有時候動態變數名對程式來說是有用的,但是感覺會降低可讀性。

這種寫法用在團隊中會不會被公幹?XD

分享一下,動態變數我們團隊蠻常用的,
尤其是在屬性是中文的時候...恩好像怪怪的,哈哈哈
然後不推薦直接在全域的this上添加屬性,有可能汙染其他全域的變數

我是會標記該區塊功能是幹嘛的以防自己忘記,團隊上應該是還好吧?只要別人看的懂即可。

這次我的狀況,就不適合用this,不然2000多組變數可能會出現無法預估的錯誤。

一個回答讓我又學到一課惹,以後我在使用也會多注意

froce iT邦新手 1 級 ‧ 2018-03-12 06:13:33 檢舉

感覺乾脆用dict來存取會比較好管控,至少要debug的話一下就能列出所有的變數,也不會有污染其他變數的問題?

我廢廢的,這個就沒用過無法比較了。

我要發表回答

立即登入回答