Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 7794|Yanıt: 0

[JavaScript] es6 Uzatma Operatörü Üç nokta (...) )

[Bağlantıyı kopyala]
Yayınlandı 19.06.2020 12:31:11 | | |
anlam

Genişleme operatörü (spread) üç noktadır (...) )。 Bu, bir dinlenme parametresinin tersi gibi, bir diziyi virgülle ayrılmış bir parametre dizisine dönüştürmek gibi.



Bu operatör esas olarak fonksiyon çağrıları için kullanılır.



Yukarıdaki kodda, array.push(...) items) ve add(...) numbers), her ikisi de fonksiyon çağrısıdır ve her ikisi de uzantı operatörleri kullanır. Bu operatör, bir diziyi parametreler dizisine dönüştürür.
Uzatma operatörleri, normal fonksiyon parametreleriyle birlikte kullanılabilir ve bu oldukça esnektir.



Alternatif diziler için uygulama yöntemi

Uzantı operatörü diziyi genişletebildiğinden, diziyi fonksiyona argümana dönüştürmek için apply yöntemini kullanmaya gerek yoktur.



İşte uygulama yönteminin yerine bir uzantı operatörünün uygulanmasına dair pratik bir örnek, Math.max yöntemi bir dizinin en büyük elemanının yazılmasını basitleştirmek için uygulanıyor.



Yukarıdaki kod, JavaScript'in bir dizinin en büyük elemanını bulacak bir fonksiyon sağlamadığı için, sadece Math.max fonksiyonu uygulayarak diziyi bir parametre dizisine dönüştürüp maksimum değeri bulabileceğinizi söylüyor. Uzantı operatörü ile Math.max doğrudan kullanabilirsiniz.
Bir diğer örnek, push fonksiyonu aracılığıyla başka bir dizinin kuyruğuna bir dizi eklemektir.



Yukarıdaki kodun ES5 yazma yönteminde, push yönteminin parametreleri dizi olamaz, bu yüzden push yöntemini uygulama yöntemi aracılığıyla esnek bir şekilde kullanmamız gerekir. Uzatma operatörü ile, dizi doğrudan push yöntemine aktarılabilir.
İşte başka bir örnek.



Operatörlerin uygulanmasını genişletmek

(1) Dizileri birleştirme

Uzatma operatörü, sayıların kombinasyonunu yazmak için yeni bir yol sunar.



(2) dekonstrüksiyon ile birleştirilmiş

Uzatma operatörleri, diziler oluşturmak için dekonstrüksiyon atamalarıyla birleştirilebilir.



Dizi ataması için uzantı operatörünü kullanırsanız, sadece parametrenin son rakamına yerleştirilebilir, aksi takdirde hata bildirilir.



(3) Fonksiyonun getiri değeri

JavaScript fonksiyonları yalnızca bir değer döndürebilir ve birden fazla değer döndürülmesi gerekirse sadece dizileri veya nesneleri döndürebilir. Uzatma operatörleri bu sorunu çözmek için bir çözüm sunar.



Yukarıdaki kod, veritabanından bir veri satırı alır, operatörü genişletir ve doğrudan üretici Date'e iletir.

(4) Yayım

Uzatma operatörleri ayrıca dizeleri gerçek dizilere dönüştürebilir.



Yukarıdaki yazının önemli bir avantajı vardır; yani 32-bit Unicode karakterleri doğru şekilde tanıyabilmektedir.



Yukarıdaki kodu yazmanın ilk yolu olan JavaScript, 32-bit Unicode karakterlerini 2 karakter olarak tanır ve uzantı operatörlerinde bir sorun yoktur. Yani dizinin uzunluğunu doğru şekilde döndüren fonksiyon şöyle yazılabilir:



Bu, 32-bit Unicode karakterlerin manipüle edilmesini içeren herhangi bir fonksiyon için sorundur. Bu nedenle, hepsini genişletme operatörleriyle yeniden yazmak en iyisidir.



Yukarıdaki kodda, uzatma operatörünü kullanmazsanız, string ters işlemi yanlıştır.

(5) Iterator arayüzünü uygulayan nesneler

Iterator arayüzündeki herhangi bir nesne, uzantı operatörüyle gerçek bir diziye dönüştürülebilir.



Yukarıdaki kodda, querySelectorAll yöntemi bir nodeList nesnesi döndürür. Bu bir dizi değil, dizi benzeri bir nesnedir. Bu durumda, uzantı operatörü bunu gerçek bir diziye dönüştürebilir çünkü NodeList nesnesi Iterator arayüzünü uygular.
Iterator arayüzü olmayan dizi benzeri nesneler için, uzantı operatörü onları gerçek bir diziye dönüştüremez.



Yukarıdaki kodda, arrayLike dizi benzeri bir nesnedir, ancak Iterator arayüzü dağıtılmadan, uzantı operatörü hata rapor eder. Bu durumda, arrayLike'ı gerçek bir diziye dönüştürmek için Array.from yöntemini kullanabilirsiniz.

(6) Harita ve Küme yapıları, Üreteç fonksiyonları

Uzantı operatörü, veri yapısının Iterator arayüzünü dahili olarak çağırır, böylece Iterator arayüzüne sahip herhangi bir nesne, örneğin Map yapısı gibi bir uzantı operatörü kullanabilir.



Jeneratör fonksiyonu çalıştığında, bir traverser nesnesi döner, böylece uzatma operatörleri de kullanılabilir.



Yukarıdaki kodda, Go değişkeni bir Üretici fonksiyonudur ve çalıştırmadan sonra bir traverser nesnesi döndürür; bu traversal nesnede bir uzatma operatörü çalıştırıldığında, iç dolaşmadan elde edilen değerler bir diziye dönüştürülür.
Bir nesne için bir uzatma operatörü kullanırsanız, bir hata bildirilir.





Önceki:Vue+ElementUI implementasyonu
Önümüzdeki:Angular proje çıkış sorunu
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com