2012-02-27 9 views
9

JSLint insiste en que mi uso del algo exotic tilde operator en el ejemplo siguiente es inesperado. Lo que me pregunto es si esto es una limitación de JSLint. o modo estricto? o ¿qué más me estoy perdiendo?JSLint no espera mis tildes

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

Además, ¿por qué no debería usar el operador de tilde de aspecto simple en lugar del ejemplo más complejo a continuación? Seguramente debe haber una buena razón para no hacerlo.

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

Hey, eso es algo que yo no sé. – MrBoJangles

+0

Debe habilitar 'Tolerar operadores bit a bit' (' ~ 'es un operador bit a bit). Una razón por la que no lo uso: no creo que sea tan común y más difícil de entender (pero podría ser solo yo). No solo requiere la comprensión del operador en sí, sino también del número * representación *, es decir, que '-1' se representa con todos los bits establecidos en' 1' (y por lo tanto el complemento es '0' ->' falso') . –

+0

Así que como ~ es en modo bit NO, y en JS 0-> ¡¡¡VERDADERO! 0-> FALSO, y solo ~ -1-> 0 ... listo –

Respuesta

6

Desde el JSLint Docs:

bit a bit Los operadores

JavaScript no tiene un tipo entero, pero tiene operadores bit a bit. Los operadores bit a bit convierten sus operandos de punto flotante a enteros y viceversa, por lo que no son tan eficientes como en C u otros lenguajes. Raramente son útiles en aplicaciones de navegador. La similitud con los operadores lógicos puede enmascarar algunos errores de programación. La opción bit a bit permite el uso de estos operadores: < < >> >>> ~ & |.

puede activarlo bajo options

Saludos

+0

el enlace no funciona, mejor actualice la respuesta con la solución – sidgate