Ne !!~ (not tilde/bang bang tilde) '/içeren' Dizi yöntem dahil bir arama sonucunu değiştirmek mi?
Eğer bir WordPress kullanmak en açıklamaları okursanız inArray
sayfa here, ilginç bir açıklama var:
!!~jQuery.inArray(elm, arr)
Şimdi, çift ünlem türü için sonuç dönüştürür inanıyorum true
değeri boolean
,. Anlamadığım şey, bu tilde (~
) operatörü kullanılır nedir?
var arr = ["one", "two", "three"];
if (jQuery.inArray("one", arr) > -1) { alert("Found"); }
if
deyimi yeniden düzenleme:
if (!!~jQuery.inArray("one", arr)) { alert("Found"); }
Arıza:
jQuery.inArray("one", arr) // 0
~jQuery.inArray("one", arr) // -1 (why?)
!~jQuery.inArray("one", arr) // false
!!~jQuery.inArray("one", arr) // true
Ben de eğer ön tilde koydum, sonuç -2
olduğunu fark ettim.
~!!~jQuery.inArray("one", arr) // -2
Tilde amacını anlamadım. Biri bunu açıklamak ya da bir kaynak doğru beni işaret edebilir misiniz?
CEVAP
!!~expr
döner expr
aksi -1
; true
döner olduğunda 20**. Bu gibi çalışır:
-1 = 1111 1111 1111 1111 1111 1111 1111 1111b
~-1 = 0000 0000 0000 0000 0000 0000 0000 0000b // ~ = bitwise not = invert all bits
!0 = true
!true = false
Değeri -1
en az bir bit sıfıra ayarlanır; eviren truthy bir değer oluşturur; iki kez !
operatör truthy bir değere uygulamak daha başka getirileri boolean true.
-Yukarıda belirtilen işlevi, string ise true değerini döndürür/dizinin belirtilen iğne içerir:
!!~"abc".indexOf("d") // indexOf() returns -1, the expression evaluates to false
!!~"abc".indexOf("a") // indexOf() returns 0, the expression evaluates to true
!!~"abc".indexOf("b") // indexOf() returns 1, the expression evaluates to true
Ben şahsen bu zavallı kodlama ne kadar bu bir kod satırı deşifre geçirdiğini düşünüyor sanırım. Kolayca aşağıdaki gibi yazılı olabilir
return this.modifiedPaths.indexOf(path) != -1; // note: indexOf returns a number >= -1
Belirli bir değer içeren bir dizi belg...
Tilde (~) numaralama tanımı nedir?...
JavaScript Dizi kullanmak doğru mu.() ...
Nasıl el ile özel bir değişken (ör: ti...
Java çift tilde anlamı ( ~ ~ )?...