Új hozzászólás Aktív témák

  • cattus
    addikt

    Most ez a porszem zavarja a tisztánlátásomat . Sok redukció után tudtam csak enyire leegyszerűsíteni ezt a zavaró kódproblémámat :
    var xa01 = [ , ] , xe = [ ] ;
    // xa01[0] = xe ; xa01[1] = xe ; 
    // xa01[0] = [ ] ; xa01[1] = [ ] ; 

    // alert(xa01[0][0 ] +'\n'+ xa01[1][0] ) ;
    xa01[0][0] = 7 ; xa01[1][0] = 8 ; 
    alert(xa01[0][0 ] +'\n'+ xa01[1][0] ) ;
    xa01[0][0] = 9 ;
    alert(xa01[0][0 ] +'\n'+ xa01[1][0] ) ;
    :F
    Ha az xa01[0] = [ ] ; xa01[1] = [ ] ; -vel eresztem, akkor rendesen megy, az xa01[0][0] és xa01[1][0] különböző értékűek . Ha viszont az xa01[0] = xe ; xa01[1] = xe ; -vel eresztem, akkor rosszul megy, az xa01[0][0] és xa01[1][0] egyforma értékűek .
    Miért van ez a másság ?

    Az első esetben xa01[0] és xa01[1]-nek amikor értéket adsz, akkor két különböző tömb lesz létrehozva, mivel JavaScript esetében ezt jelenti a [] szintaxis.

    A második esetben viszont egy már előre létrehozott tömböt (xe) adsz oda xa01[0]-nak és xa01[1]-nek. Ilyenkor xe értéke nem másolódik le, csak egy referencia lesz beállítva rá, és ezért válozik meg xa01 másik értéke, ha az egyiket változtatod.

Új hozzászólás Aktív témák