2

Tengo una duda Tengo el siguiente segmento de codigo

var edad = 16;
  if (edad === 18) {
    var esAdulto = true;
  } else {
    esAdulto = false;
  }
  console.log("..Es Adulto: " + esAdulto);

Mi pregunta es al declarar una variable var dentro de una sentencia if o bloque {} es considerado global scope ?

No deberia tirar error variable no definida al tratrar de imprimir "esAdulto" ya que se encuentra dentro de un bloque de codigo de otro nivel.

Scope: El ambito de un variable (llamado en ingles "scope") en la zona del programa en la que se define una varible Javascript define 2 ambitos Glogal y funcion o bloque

la variable no debe destruirse al salir de un bloque de codigo?

  if (Condicion) {
    // Bloque de codigo encerrado por {}
    //
    // ... fin de codigo
  } else {
    // Otro bloque de codigo
    // ... fin de codigo
  }
Alluka
  • 103
  • 1
  • 9
  • 1
    Es local esAdulto. Te recomiendo crear esa misma variable, fuera de toda condición, sin asignarle ningún valor, y luego cuando la condición se cumpla, setees un valor a tal variable y la retornes para asegurarte. esAdutlo = 1; – DeVllo Mar 04 '20 at 15:12

1 Answers1

-3
  1. Todo lo que este dentro de un bloque de codigo {}, es considerado variable local.
  2. Si la variable esta fuera del bloque de codigo, es considerado variable global.

Nota: Esto se debe a que la variable local NO puede acceder hacia fuera, pero las variables globales si pueden estar afuera y dentro.

Ejemplo (será un ejemplo un poco raro, pero te dará la idea hehehe): Tu órganos internos del cuerpo (variable local) no pueden ver lo que esta afuera, pero tus ojos (variable global), pueden ver lo que esta dentro de tu cuerpo, sea este cortando el tejido de la piel, para poder acceder a tus organos.

En cuanto a las condicionales, dependiendo donde y como lo implementes puede ser local o global, me explico:

si dentro de tu condicional IF (como el ejempo anterior):

var edad entiendo que seria tu variable global, y las variables dentro, osea, esAdulto , seria tu variable local. pero como estas esperando una respuesta, después de validar la condicional y está dentro de tu bloque de código, este te permite imprimir el resultado en tu console.log.

Si salieras de ese bloque de código e intentaras crear otro y llamar a ese resultado anterior en el nuevo bloque, NO funcionaria.

Espero que está respuesta, allá podido aclarar tus dudas. También la mejor forma de comprobar algo, es haciendo la prueba. A veces nuestra lógica no es igual o no esta a la par en programación hehehhee....

Lógica de programación te puede ayudar a reforzar estos conceptos, siempre y cuando practiques.

Only Jobs
  • 17
  • 3
  • 2
    Ambas son globales si no están metidas en una función. Prueba a hacer `if(true){var x =0;}` y veras como puedes acceder desde fuera. Aquí se explica muy bien: [var, let, const… o nada en Javascript](https://es.stackoverflow.com/a/106067/128699) – x3k Mar 04 '20 at 15:03
  • 1
    Exacto, por eso le dije que "dependiendo como y donde lo implemente puede ser local o global"... – Only Jobs Mar 04 '20 at 15:05
  • 3
    Me parecen conceptos equivocados, checa aqui https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Sentencias/var – BetaM Mar 04 '20 at 15:12