SORU
12 EKİM 2011, ÇARŞAMBA


Javascript Değişkenleri başvuruyla Pass

Nasıl JS değişkenleri başvuruyla geçtim mi? Döngü için onları koymak istiyorum, bu yüzden çeşitli işlemleri gerçekleştirmek istediğim 3 değişken var ve her biri için işlemleri gerçekleştirmek.

kod pseudo:

    myArray = new Array(var1, var2, var3);
    for (var x = 0; x < myArray.length; x  ){
        //do stuff to the array
    }
    //now do stuff to the updated vars

Bunu yapmak için en iyi yolu nedir?

CEVAP
12 EKİM 2011, ÇARŞAMBA


"Referans" JavaScript mevcut. tarafından geçiş yok Bir nesne, pass-by-value bir nesne için bir referans demek olan) geçmek ve bir fonksiyon nesnenin içeriğini değiştirmek olabilir:

function alterObject(obj) {
  obj.foo = "hello world";
}

var myObj = { foo: "goodbye" };

alterObject(myObj);

alert(myObj.foo); // "hello world" instead of "goodbye"

Şimdi, sizin durumunuzda, her neyse bir şey, anladığım kadarıyla geçen sen değilsin. Eğer isterseniz sayısal bir dizin ile bir dizi özellikleri üzerinde yineleme ve dizinin her hücre değiştirebilirsiniz.

Önemli olan "pass-by-reference" çok özel bir terimdir. unutmayın. Olası değiştirilebilir bir nesne referansı geçirmek için sadece anlamına gelmez. Bunun yerine, olası bir işlev bu değeri değiştirmek için izin verecek şekilde basit bir değişken geçmek anlamına geliraramabağlam. Yani:

 function swap(a, b) {
   var tmp = a;
   a = b;
   b = tmp; //assign tmp to b
 }

 var x = 1, y = 2;
 swap(x, y);

 alert("x is "   x   " y is "   y); // "x is 1 y is 2"

C gibi bir dilde , mümkün dil çünküyok(tür) referans olarak geçmek zorunda.

edit&; bu son zamanlarda (Mart 2015) blogunda benim aşağıda belirtildiği gibi Reddit yine havaya uçurdu, ama bu durumda Java hakkında -. Geri ve ileri-karışıklık büyük bir kısmını talihsiz çarpışma kelimesini içeren kaynaklanıyor Reddit yorumlar okurken aklıma geldi"". referans Terminoloji "başvuru" ve "değeri" pass" programlama dili ile. "nesneleri kavramı öncedir pass İşlev parametreleri" (ya da değil) ortamı. "bağlı nasıl nesneler hakkında değil; işlevi parametreleri hakkında ve özellikle Özellikle,-by pass-referans dil-tek bir gerçek unutmayınyoknesneleri-dahil; hala nesneyi değiştirmek için yeteneği variçindekilertam olarak JavaScript değil gibi , ve hemen hemen durur. Ancak, birayrıcaarama ortamında nesne başvurusu değiştirmek mümkün olacak, ve sen bu işin anahtarıolamazJavaScript. Bir dil değil başvurusunu kendisi geçer, ama bir referans olarak geçmektedirbaşvuru için başvuru.

edit- here is a blog post on the topic. (C gerçekten var olmadığını anlatıyor bu yazı için yorum referans olarak geçmek Unutmayın. Bu doğru. C ne yapar, ancak, bir fonksiyon çağırma noktasında düz değişkenler için, ya da açıkça başvurular oluşturmak için yeteneği bir işaretçi oluşturmak için, ya daörtülü olarakbunun yapılması için çağrıda olan işlevi çağrılırken. Bu JavaScript desteklemiyor önemli şeyler vardır.)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ash100HD

    Ash100HD

    29 EKİM 2011
  • Kenneth Håkonsen

    Kenneth Håk

    13 Mart 2011
  • mobilenet.cz

    mobilenet.cz

    26 NİSAN 2008