Considere as seguintes expressões usando a linguagem javascript: 1 == '1' e 1 === '1' Os resultados são, respectivamente,
- A)1 e 1
Errada, porque os resultados não são 1 e 1, e sim valores booleanos.
- B)true e true
Errada, porque a segunda comparação com === não é verdadeira, já que os tipos são diferentes.
- C)'1' e '1'
Errada, porque o resultado das expressões não são as strings '1', mas booleanos.
- D)false e false
Errada, porque a primeira comparação com == é verdadeira, já que há conversão de tipo.
- E)true e false
Certa, porque == permite coerção de tipo e === exige tipo idêntico, gerando true e false.
Gabarito: E
Em JavaScript, o operador == faz comparação com conversão de tipo quando necessário. Por isso, 1 == '1' resulta em true, porque a string '1' é convertida para número antes da comparação. Já o operador === é a comparação estrita: ele exige mesmo valor e mesmo tipo, sem “ajudinha” de conversão. Assim, 1 === '1' dá false, porque um é number e o outro é string. Essa diferença é clássica na linguagem e aparece muito em prova porque a banca gosta de testar se você sabe separar igualdade frouxa de igualdade estrita. Portanto, o gabarito é E: true e false.