Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

bdexterholland

Zeros e o operador ! (exclamação)

Recommended Posts

Olá a todos,

 

sou novo na área de javascript e acredito que esta seja a minha primeira postagem nesta seção.

 

Baum, eu estou estudando JavaScript utilizando como base o que parece ser uma monografia do Filipe Del Nero Grillo. Em sua apostila, ele escreveu o seguinte exemplo:

var arr = ['oi', 'olá'];
  	
  	function lerarr(indice)
    	{
      	if (!indice) throw Error;
      	else window.alert(arr[indice]);
    	}
  	
  	try
    	{
      	lerarr(0);
    	}
  	catch(e)
    	{
      	window.alert("Oops! no soup for you!");
    	}
  	finally
    	{
      	document.write("Ocorreu um erro");
    	}

e durante a execução cai no catch se eu passar 0 (zero) como parametro para lerarr(). Minha dúvida é a seguinte: Zero é equivalente a null? e quais situações?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, zero não é equivalente a null, mas nesse caso o a função lerarr também vai gerar uma exceção se null for passado.

 

Isso ocorre porque o ! (not) é operador booleano, então qualquer valor passado será convertido implicitamente para o tipo boolean (isto é, aceita apenas true ou false). A conversão ocorre da seguinte forma:

 

  • Se o tipo for numérico, 0 é convertido para false e qualquer outro valor é true;
  • Se for texto, uma string vazia ("") equivale a false e qualquer outro valor é true;
  • Se o valor for null ou indefinido, é convertido para false.

Sendo assim, se você passar "", 0, null, ou uma variável indefinida, a função lançará uma exceção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.