2013-03-31 61 views
0

我有功能(x)改變這需要的整數,並且改變其值更改JavaScript中傳遞變量的值而不返回?

function change(x) { 
    x=26; 
} 

然後我使一個變量,我試圖改變其值

window.onload=function(){ 
    var a = 10; 
    change(a); 
    console.log(a); 
} 

一個沒有按不會像我所預期的那樣改變。是否有可能在不使用return的情況下以簡單的方式在JavaScript中實現這種行爲?我寧願避免使用對象和全局變量。

這裏是我的全部代碼:

<!DOCTYPE html> 
<html> 
<head> 
</head> 
<body> 
    <script> 
    function change(x) { 
     x=26; 
    } 
    window.onload=function(){ 
     var a = 10; 
     change(a); 
     console.log(a); 
    } 
    </script> 
</body> 
</html> 
+2

是的,'一=改變( );' – JJJ

+0

檢查這個答案:http://stackoverflow.com/questions/518000/is-javascript-a-pass-by-reference-or-pass-by-value-language?rq=1 – NilsH

回答

1

的JavaScript總是按值傳遞參數,所以你不能做到這一點,你原來寫。

但是,一個對象的值是一個引用,所以你可以使用一個對象。

但是,這會對這個用例造成混淆。你應該有該函數返回轉換後的數字。

+0

問題是,我的「更改」功能中有一個回調函數,因此我無法返回值。那麼我會得到'未定義'。 – Pithikos

+0

@Pithikos你應該使用回調函數。 – dfsq

+1

「但是,對象的值是一個引用」你的意思是,變量的值是一個引用,它指向一個對象。 – newacct

0

你不能通過引用傳遞變量(或者根本就不可以)。你可以做的是傳遞一個對象並修改其屬性:

function change(obj) { 
    obj.a = 4; 
} 

var obj = {a: 0}; 
change(obj); 

// obj.a is "4" now 
-2

我這樣做,它的工作:

function change(x) { 
    x=26; 
    return x; 
} 
    window.onload=function(){ 
    var a = 10; 
    console.log(change(a)); 
} 

希望它可以幫助

+0

在'window.onload'函數末尾添加一個'console.log(a)'證明你是錯誤的。 –