1
resposta

Por que não dá erro como em outras linguagens de programação?

var cabecalho = document.querySelector(".cabecalho");
var titulo = document.querySelector(".titulo");
cabecalho.textContent = "Aparecida Nutricionista";
titulo.textContent = cabecalho.textContent;
var pesoValidacao = peso <= 0 || peso >= 1000;
var alturaValidacao = altura <= 0 || altura >= 3.00;



function validar() {
    if (pesoValidacao && alturaValidacao) {
        tdImc.textContent = "Peso e altura inválidos!";
    } else if (pesoValidacao) {
        tdImc.textContent = "Peso inválido!";
    } else if (alturaValidacao) {
        tdImc.textContent = "Altura inválida";
    } else {
        var imc = peso / altura ** 2; 
        tdImc.textContent = imc;
    }



    /**if (peso <= 0 || peso >= 1000) {
        pesoValido = false;
    } 

    if (altura <= 0 || altura >= 3.00) {
        alturaValido = false;
    }

    if (!pesoValido && !alturaValido) {
        tdImc.textContent = "Altura e peso invalidos!"
    }**/
}

/*Primeiro paciente*/
var paciente = document.querySelector("#primeiro-paciente");
var tdAltura = paciente.querySelector(".info-altura");
var tdPeso = paciente.querySelector(".info-peso");
var tdImc = paciente.querySelector(".info-imc");
var altura = tdAltura.textContent;
var peso = tdPeso.textContent;
validar();

/*Segundo paciente*/
paciente = document.querySelector("#segundo-paciente");
tdAltura = paciente.querySelector(".info-altura");
tdPeso = paciente.querySelector(".info-peso");
peso = tdPeso.textContent;
altura = tdAltura.textContent;
tdImc = paciente.querySelector(".info-imc");
validar();

/*terceiro paciente*/
paciente = document.querySelector("#terceiro-paciente");
tdAltura = paciente.querySelector(".info-altura");
tdPeso = paciente.querySelector(".info-peso");
peso = tdPeso.textContent;
altura = tdAltura.textContent;
tdImc = paciente.querySelector(".info-imc");
validar();

/*quarto paciente*/
paciente = document.querySelector("#quarto-paciente");
tdAltura = paciente.querySelector(".info-altura");
tdPeso = paciente.querySelector(".info-peso");
peso = tdPeso.textContent;
altura = tdAltura.textContent;
tdImc = paciente.querySelector(".info-imc");
validar();

/*quinto paciente*/
paciente = document.querySelector("#quinto-paciente");
tdAltura = paciente.querySelector(".info-altura");
tdPeso = paciente.querySelector(".info-peso");
peso = tdPeso.textContent;
altura = tdAltura.textContent;
tdImc = paciente.querySelector(".info-imc");
validar();

Eu estou na aula 2 do curso de básico de js e fiz algumas alterações no código do professor por diversão. Nesse processo, notei que quando defini as variáveis pesoValidacao e alturaValidacao usando variaveis que nao haviam sido criadas antes, nenhum erro foi exposto e quando printo essas duas variáveis no console ambas são false. Queria saber pq isso ocorre.

1 resposta

Quando você usa as variáveis peso e altura, elas são undefined, e as suas atribuições de valor lógico usando valor undefined: var pesoValidacao = peso <= 0 || peso >= 1000; var alturaValidacao = altura <= 0 || altura >= 3.00; retornam false.

Toda vez que você usar uma variável undefined numa operação lógica, o resultado é false.