para - javascript html



Por que tab é igual a false em JavaScript? (1)

Veja Comparação de Igualdade Abstrata ::

A comparação x == y , onde x e y são valores, produz true ou false. Essa comparação é realizada da seguinte maneira:

Portanto, na sua situação, x é uma string e y é um booleano. A primeira condição que é cumprida aqui é:

  1. Se Type (y) for Boolean, retorne o resultado da comparação x == ToNumber(y) .

Transformando o cheque em

'\t' == 0

Que então cumpre:

  1. Se Type (x) for String e Type (y) for Number, retorne o resultado da comparação ToNumber (x) == y.

E ToNumber('\t') === 0 :

console.log(Number('\t'));

Transformando o cheque em

0 == 0

que é o mesmo que

0 === 0

ou true .

Observe que, enquanto uma string composta por todo o espaço em branco for == false , chamar Boolean em uma string retornará true , porque a string possui um comprimento diferente de zero:

console.log(
  Boolean(' '),
  Boolean('\t')
);

Obviamente, seria melhor evitar sempre == - use === , e você não precisará se preocupar com essas regras tolas de coerção.

https://ffff65535.com

Esta pergunta já tem uma resposta aqui:

Eu pensei que sabia sobre as peculiaridades com == e todo o tipo estranho lança em JavaScript, mas hoje me deparei com uma coisa que não faz sentido para mim:

'\t' == false
// => true

Por que é que?

Aparentemente, '\t' não é um valor falso e, se combinado com || funciona como esperado:

'\t' || 42
// => '\t'

Por outro lado, um toString também não é chamado de false , consulte:

'\t' == 'false'
// => false

Isso me levou a pensar que a guia talvez seja convertida em um booleano, mas:

Boolean('\t') == false
// => false

Então, a pergunta é: por que isso?





javascript