2013-02-22 66 views

回答

3
function increment(val) { 
    val+=1; 
} 

聲明一個變量val您的本地功能。你改變你的局部變量而不是外部變量。這是相同的

function increment(val2) { 
    val2+=1; 
} 

你可以這樣做:

function increment(val) { 
    return val+1; 
} 
var val=5; 
val = increment(val); 

function increment(holder, varname) { 
    holder[varname] = holder[varname]+1; 
} 
var val=5; 
increment(window, 'val'); 
+0

這是一個全局變量,所以不傳遞任何東西,直接在函數內部使用全局也是一個選項。 – 2013-02-22 10:11:42

+0

@AnthonyGrist是的,但我想這個功能沒有任何意義,所以我沒有提出這個建議。 – 2013-02-22 10:13:31

0

這是因爲在Javascript原始變量是按值傳遞,而不是參考

當傳入像字符串或數字這樣的基本類型變量時,該值通過值傳入。這意味着,在函數的任何變化到 變量,而從任何 的功能外發生

檢查該主題的更多信息這個偉大的博客條目完全獨立: http://snook.ca/archives/javascript/javascript_pass

0

你不不需要通過全球變數。 當您將參數傳遞給函數時,它會創建一個valriable的本地副本。所以,如果你想從函數中實現全局變量,那麼在調用函數時不要傳遞它,因爲無論如何都可以訪問全局變量,而無需傳遞。

<script> 
function increment() { 
    val+=1; 
} 

var val = 5; 

increment(); 

alert(val); 

注意,當您正在定義的increment()功能您所指定的參數作爲**val**。因此在函數內部,對val的每個引用都是針對這個本地參數的。如果要訪問實際全局變量,請使用window.val

相關問題