0

JavaScript中是否可以使用函數參數定義變量名稱?JavaScript:使用函數參數定義變量名稱

這裏是my jsFiddle。在下面的例子中,我想varB當通過makeNull(varName)傳遞到被定義爲null

var varA = undefined; 
if (varA == undefined) { 
    varA = null; 
} 
var varB = undefined; 

makeNull(varB); 

function makeNull(varName) { 
    if (varName == undefined) { 
    varName = null; 
    } 
} 

alert (varA + ' | ' + varB); 

+0

您似乎試圖通過更改另一更高範圍內的綁定來破壞封裝。爲什麼?即使有解決方案,這也不是很好的軟件實踐。 –

+0

我同意Francis,但創建函數來修改對象或變量沒有任何問題。你應該明確你傳遞的內容以及你回報的內容。也許這樣? http://jsfiddle.net/zVM9M/2/ –

+0

@FrancisAvila我通過jQuery獲得了多個複選框的值。被檢查的= 1不被檢查的是'未定義的',但我需要它們爲'null'。例如:checkbox1 = 1,checkbox2 = 1,checkbox3 = null。 –

回答

1

JavaScript不提供 「通過引用調用」 參數。當你調用一個函數時,它會接收參數表達式的值,而不是對錶達式中變量的引用。所以它不能修改這些變量的綁定。

如果你想做這樣的事情,你可以使用容器和標籤,例如,

function makeNull(obj, label) { 
    if (obj[label] === undefined) { 
     obj[label] = null; 
    } 
} 
var varB = { abc: undefined } 
makeNull(varB, 'abc'); 
+0

我想我在這裏完全失去了它。當然,一個變量作爲參數傳遞任何變量equals,而不是變量名。每個人的答案都非常具有教育意義,我非常感謝他們,但也許我應該刪除這個問題,因爲我認爲這可能很混亂。感謝您的回答! –

2

如果你試圖定義一個函數參數變量,那麼你要麼需要使用數組或對象。

+0

你能解釋一下嗎? –

-1

您可以將一個變量(定義爲'undefined')傳遞給函數並設置其值。

http://jsfiddle.net/AwnVN/

+1

將未定義的變量傳遞給函數沒有任何問題。如果你沒有進行防守編碼,它可能會破壞你的弱代碼,但這不是JavaScript問題 - 這是你的問題。檢查這個小提琴的證明:http://jsfiddle.net/8sUhe/ –

+0

哦,這使得我們將一個變量定義爲undefined時有所不同。在這種情況下沒有JS錯誤。涼。 – Dev

+0

您必須將所有參數傳遞給函數。如果你不這樣做,他們會被隱式轉向未定義。但是顯式傳遞'undefined'沒什麼問題。 – Zaffy