Pular para o conteúdo principal

JS - Truthy e falsy

Anteriormente vimos como condicionar o fluxo execução com a estrutura condicional "if", comparando valores, hoje veremos como o Javascript entende o que são valores verdadeiros e falsos, através do "truthy" e "falsy",

Falsy

Quando um valor convertido em booleano representa o valor false, sendo eles (considerando var teste;):

  • undefined (if (undefined) teste = true; else teste = false;)
  • null (if (null) teste = true; else teste = false;)
  • NaN (if (NaN) teste = true; else teste = false;) 
  • 0 (if (0) teste = true; else teste = false;)
  • -0 (if (-0) teste = true; else teste = false;)
  • '' (if ('') teste = true; else teste = false;)
  • "" (if ("") teste = true; else teste = false;)
  • false (if (false) teste = true; else teste = false;)
Todos os exemplos acima retornam falso, mantendo a variável "teste" com o valor "false".


Truthy

Quando um valor convertido em booleano representa true, sendo todos os valores diferentes dos "falsy" listados acima:

  • Números (if (1) teste = true; else teste = false;)
  • Objetos (if ( {} ) teste = true; else teste = false;)
  • Arrays (if ( [] ) teste = true; else teste = false;)
  • Texto (if ( '0' ) teste = true; else teste = false;)
  • true (if ( true ) teste = true; else teste = false;)


Operador para a representação booleana

Podemos testar facilmente se um valor é verdadeiro ou falso com o operador "!!", se nos lembrarmos falamos sobre "!" que inverte o valor, ou seja, se um valor for verdadeiro o "!" inverte o mesmo para falso, então ao utilizarmos o "!!" temos o valor booleano real:


Comentários

Mais visitadas

Como Verificar se um Objeto Existe (Delphi)

Em alguns momentos surge a necessidade de verificar se um determinado objeto existe, ou seja se já foi criado, principalmente quando se trabalha com criação dinâmica em tempo de execução, então vamos ao exemplo: - Vamos criar uma variável, um vetor do tipo caixa de texto: var Minha_caixa : array of TEdit; - Em seguida definir o tamanho desse vetor, no caso será dez: setLength(Minha_caixa, 10) - Agora iremos criar nossa caixa de texto: // lembrando que o vetor inicia em zero // logo o índice final é o tamanho total - 1 for vl_i := 0 to Length(Minha_caixa) -1 do begin Minha_caixa[vl_i] := TEdit.Create(self); with Minha_caixa[vl_i] do begin Parent := Self; Name := 'Caixa_N'+IntToStr(vl_i); Text := 'Esta é a '+IntToStr(vl_i)+' º caixa !'; ReadOnly := true; Height := 21; Width := ...

Iniciar e Parar Serviços do Windows (Delphi)

Em certas ocasiões nos deparamos com a necessidade de manipular determinadas atividades do SO, como iniciar ou parar um banco de dados, ou qualquer outro serviço que esteja funcionando no momento. Segue abaixo um código que encontrei na Internet para tal finalidade (não me recordo à fonte, assim que eu a encontrar colocarei). Iniciar Serviço: uses WinSvc; // // start service // // return TRUE if successful // // sMachine: //   machine name, ie: \SERVER //   empty = local machine // // sService //   service name, ie: Alerter // function ServiceStart(   sMachine,   sService : string ) : boolean; var   //   // service control   // manager handle   schm,   //   // service handle   schs   : SC_Handle;   //   // service status   ss     : TServiceStatus;   //   // te...

Listar arquivos existentes em diretório (Delphi)

Mostraremos uma maneira simples e prática para listar o conteúdo de um diretório com a opção de incluir nessa listagem os arquivos de seus subdiretórios. No exemplo abaixo temos um Edit para receber o diretório a ser pesquisado um CheckBox para indicar se os subdiretórios entrarão na pesquisa um botão para efetuar a pesquisa e um Memo para listar os arquivos encontrados, no final um Edit que receberá o cálculo final (em bytes) da soma do tamanho dos arquivos. procedure TForm1.Button1Click(Sender: TObject); begin   tamanhoTotal := 0;   memLista.Lines.Clear;   ListarArquivos(edtDiretorio.Text, chkSub.Checked);   Edit1.Text := IntToStr( tamanhoTotal ); end; procedure TForm1.ListarArquivos(Diretorio: string; Sub:Boolean); var   F: TSearchRec;   Ret: Integer;   TempNome: string; begin   Ret := FindFirst(Diretorio+'\*.*', faAnyFile, F);   try     while Ret = 0 do ...