2017-08-02 45 views
-1

有沒有一種方法可以傳遞變量本身,而不是JavaScript中的值?我記得能夠在fla3中這樣做,如果我記得基於javascript的正確。我不確定爲什麼我不能在這裏做同樣的事情。您的幫助將不勝感激。在數組中傳遞變量,而不是javascript中的值

 
variable1: false, 

function1() { 

    this.variable1 = true //this works of course console.log(this.variable1) prints true 
} 

function2() { 

    var temparray1 = [this.variable1] 
    temparray1[0] = true //does not work like i want, it's the value in the array that change, not this.variable1 

    console.log(this.variable1) //prints still false 
    console.log(temparray1[0]) //prints true 
} 
+0

你不能那樣做。 – SLaks

+0

這不是該語言應該如何工作的原因,對於任何稍後必須使用代碼的JavaScript開發人員來說,這會非常混亂。 – sbking

+2

[Javascript引用與值的可能重複](https://stackoverflow.com/questions/6605640/javascript-by-reference-vs-by-value) – Nisarg

回答

0

JavaScript總是按價值傳遞。所以你的情況

var temparray1 = [this.variable1] 

成爲

var temparray1 = [false] 

那麼改變它不會改變變量1。但是,如果要通過更改數組來更改variable1,則應該將variable1作爲數組或對象。例如:

this.variable1 = { 
    value: false 
} 

var temparray1 = [this.variable1]; 
temparray1[0].value = true; 

同樣,此處使用Javascript經過值,但現在是this.variable1到對象,並temparray1參考[0]具有變量1的值,因此,它也是相同的對象的引用所以我們正在改變這個對象。

0

有沒有辦法通過javascript參考傳遞一個boolean,但作爲一種解決方法你可以用你的布爾中的對象,像這樣:

var variable1 = { value: false } 

function setVar() { 
    variable1.value = true 
} 

function test() { 
    var temparray1 = [variable1] 
    temparray1[0].value = true 
    console.log(variable1.value) // prints true 
    console.log(temparray1[0].value) // also prints true 
} 
2

基本數據類型始終是作爲價值傳遞,從不作爲參考。通過使用Javascript對象作爲引用,因此,您可以創建一個對象和值賦給一個屬性,像這樣:

variable1 = {yourValue : false} 
... 
var temparray1 = [this.variable1] 
temparray1[0].yourValue = true; 

現在訪問variable1.yourValue時,它應該是真實的。

相關問題