2012-02-27 15 views
9

JSLint, aşağıdaki örnekte biraz exotic tilde operator kullanımımın beklenmedik olduğu konusunda ısrar ediyor. Merak ettiğim şey bunun bir JSLint sınırlaması olup olmadığıdır? veya sıkı mod? ya da başka neyi özlüyorum?JSLint, tildesimi beklemiyor

(function() { 
    'use strict'; 
    if (~'foo'.indexOf('bar')) { 
     return 'wild accusations'; 
    } 
}()); 

Ayrıca, neden yerine aşağıda daha karmaşık bir örnek basit görünümlü tilde operatörünü kullanmak gerekmez mi? Şüphesiz, yapmamanız için iyi bir neden olmalı? JSLint Docs itibaren

if ('foo'.indexOf('bar') >= 0) { … } 
+3

Hey altında etkinleştirebilirsiniz. – MrBoJangles

+0

'Tolerate bitly operatörleri' özelliğini etkinleştirmeniz gerekir ('~' bitsel operatördür). Bunu kullanmamanın bir nedeni: Bunun yaygın olarak kullanıldığını ve anlaşılması zor olduğunu düşünmüyorum (ama bu sadece benim olabilir). Bu sadece operatörün kendisinin değil, sayı * gösteriminin * anlaşılmasını da gerektirir, yani '-1', '1' olarak ayarlanmış tüm bitlerle temsil edilir (ve bu nedenle tamamlayıcı '0' -> false'). . –

+0

Bu yüzden, ~ bit ve NOT: ve 0-> TRUE! 0-> FALSE, ve sadece ~ -1-> 0 ... zeki –

cevap

6

:

Bit Operatörler

JavaScript bir tamsayı türü yok, ama bitsel operatörleri var. Bitsel operatörler işlenenlerini kayan noktadan tamsayıya ve geriye çevirir, böylece C veya diğer dillerdeki kadar verimli değildirler. Tarayıcı uygulamalarında nadiren faydalıdırlar. Mantıksal işleçlere benzerlik bazı programlama hatalarını maskeleyebilir. Bitsel seçeneği bu operatörlerin kullanılmasına izin verir: < < >> >>> ~ & |.

Bunu bilmiyordum şey, options

Cheers

+0

link çalışmıyor, cevabı çözümle daha iyi güncelleyin – sidgate