2010-07-30 27 views
5

我試圖將引用傳遞給變量,然後更新JavaScript中的內容,這可能嗎?例如,一個簡單(失敗)的例子是...在Javascript中通過引用訪問變量

var globalVar = 2; 

function storeThis (target, value) { 
    eval(target) = value; 
} 

storeThis('globalVar', 5); 
alert('globalVar now equals ' + globalVar); 

這當然不起作用,任何人都可以幫忙嗎?

回答

4

Eval不返回值。

這將工作:

window[target] = value; 

(但是,你不及格參考,你傳遞的變量名)

+0

digitalfresh是正確的,EVAL是for語句的評價,所以你可能東東d創建一個例如 eval(「window。」+ target +「=」+ value +「;」);但是因爲遞歸太多, – Ifi 2010-07-30 15:52:24

+0

是的,但爲什麼'eval'呢?這絕對不是'eval'適合的少數情況之一。 – jasongetsdown 2010-07-30 15:55:34

+0

賓果!謝謝你LFI和DigitalFresh,這是一種享受。 – 2010-07-30 15:59:08

3

在這種情況下storeThis代碼已經訪問了globalVar如此沒有必要將它傳遞在

你的樣品是相同的:

var globalVar = 2; 

function storeThis(value) { 
    globalVar = value; 
} 

storeThis(5); 

你究竟想要做什麼?

標量不能在javascript中通過引用傳遞。如果你需要做的,要麼使用Number type或創建自己的對象,如:

var myObj = { foo: 2 }; 
2

如果你真的想使用eval,你可以使用以下命令:

var globalVar = 2;

function storeThis(target, value) { 
    eval(target + ' = ' + value); 
} 

storeThis('globalVar', 5); 
alert('globalVar now equals ' + globalVar); 

+0

在這種情況下,如果'value'是一個字符串,那麼'eval()'將把它當作一個變量(如果它是一個單詞),無效的代碼(如果它不止一個單詞是javascript不理解的)表達式(如果它是一個有效的JavaScript表達式)。 – 2010-07-30 16:31:41