Após ver o vídeo Wat (http://www.youtube.com/watch?
O operador “!” tem sempre preferência, sendo assim, qualquer checagem utilizando-o será efetuado primeiro.
Segue um exemplo de uso do operador “logical NOT” indevido.
import flash.display.MovieClip;
import flash.display.Sprite;
var teste:*;
teste = new MovieClip();
// O operador ! tem preferência
if(!teste is Sprite){
trace('Teste Certo');
}else{
trace('Teste Errado');
}
teste = new Sprite();
// Os parênteses garantem o funcionamento correto
if(! ( teste is MovieClip ) ){
trace('Teste Certo');
}else{
trace('Teste Errado');
}
Por mais que o primeiro exemplo pareça certo, ele primeiro irá checar !teste e então testará o resultado disto (um booleano) com o operador ‘is’, resultando erroneamente.
A melhor opção é de sempre utilizar parênteses, garantindo o funcionamento correto de suas expressões.