Se eu declarar uma variável booleana JavaScript como esta:
var IsLoggedIn;
E então inicialize-o com true
ou 1
, isso é seguro? Ou inicializá-lo com 1
tornar a variável um número?
javascript
boolean
mrblah
fonte
fonte
Respostas:
Os tipos dependem da sua inicialização:
Mas dê uma olhada neste exemplo:
O tipo de suas variáveis depende do valor atribuído em JavaScript.
fonte
Não, não é seguro. Você pode fazer var mais tarde
IsLoggedIn = "Foo";
e o JavaScript não gerará um erro.É possível fazer
Você também pode passar a variável não booleana para o
new Boolean()
e isso tornará IsLoggedIn booleano.fonte
if (new Boolean(false)) alert ('wat')
Consulte stackoverflow.com/a/8695363(new Boolean(false)).toString()) === "false"
, obrigado pelo linkComo este tutorial muito útil diz:
fonte
Se você quiser
IsLoggedIn
ser tratado como um booleano, deve inicializar da seguinte maneira:Se você inicializar com
var IsLoggedIn=1;
, ele será tratado como um número inteiro.No entanto, a qualquer momento, a variável
IsLoggedIn
pode se referir a um tipo de dados diferente:Isso não causará erro.
fonte
Você pode usar e testar variáveis não inicializadas pelo menos quanto à sua 'definição'. Como isso:
Além disso, existem muitas possibilidades: se você não estiver interessado em tipos exatos, use o operador '==' (ou! [Variável] / !! [variável]) para comparação (isso é o que Douglas Crockford chama de 'verdadeiro' ou ' falsy 'eu acho). Nesse caso, atribuir verdadeiro ou 1 ou '1' à variável unificada sempre retorna verdadeiro quando solicitado. Caso contrário [se você precisar de uma comparação segura de tipo] use '===' para comparação.
PS: você não pode testar 'definição' para variáveis não existentes. Assim:
dá um erro de referência ('HelloWorld não está definido')
(existe uma palavra melhor para 'definição'? Perdoe meu holandês de qualquer maneira; ~)
fonte
thisMayBeTrue = '';
- você não obterá os mesmos resultados, pois uma string vazia é falsa. "PS: você não pode test 'definedness' para não existente variáveis embora" - Claro que você pode:typeof HellowWorld === 'undefined'
.As variáveis em Javascript não têm um tipo. Diferentes de zero, não nulos, não vazios e
true
são "verdadeiros". Zero, null, undefined, string vazia efalse
são "falsos".Porém, há um tipo booleano, assim como literais
true
efalse
.fonte
2 + 2
vs"2" + 2
. Veja também atypeof
operadora .Que tal algo como isso:
Então você pode usá-lo assim:
Eu não testei o desempenho, mas a conversão de um tipo para outro não deve acontecer com muita frequência, caso contrário, você abrirá seu aplicativo até a instabilidade!
fonte
A variável se tornará o tipo que você atribuir a ela. Inicialmente é
undefined
. Se você atribuí-'true'
lo , ele se tornará uma string, se você atribuí-true
lo , ele se tornará um booleano, se você atribuí-1
lo , ele se tornará um número. As atribuições subsequentes podem alterar o tipo da variável posteriormente.fonte