Explica este código JavaScript
let x = 10;
if (true) {
let y = 20;
var z = 30;
console.log(x + y + z);
}
console.log(x + z);
- A.
60
,40
- B.
undefined
,10
- C.
50
,10
- D.
null
,40
Respuesta en el primer comentario.
For further actions, you may consider blocking this person and/or reporting abuse
Ed Stephinson -
OnlineITtuts-Tutorials -
Mudit Choudhary -
Shwet Khatri -
Once suspended, duxtech will not be able to comment or publish posts until their suspension is removed.
Once unsuspended, duxtech will be able to comment and publish posts again.
Once unpublished, all posts by duxtech will become hidden and only accessible to themselves.
If duxtech is not suspended, they can still re-publish their posts from their dashboard.
Once unpublished, this post will become invisible to the public and only accessible to Cristian Fernando .
They can still re-publish the post if they are not suspended.
Thanks for keeping DEV Community safe. Here is what you can do to flag duxtech:
Unflagging duxtech will restore default visibility to their posts.
Top comments (2)
Respuesta:
60
,40
Las variables declaradas con
let
yconst
tienen un contexto de bloque, esto significa que solo podrán ser accedidas dentro del bloque de llaves donde fueron declaradas, por ejemplo dentro de un bloqueif
o dentro de una función.Esta premisa se cumple siempre y cuando esten declaradas dentro de un bloque, si una variable esta fuera de todo bloque entonces se dice que es una variable global y por ende puede ser accedida desde cualquier parte del código.
let x = 10
es una variable global, puesto que no esta encerrada en ningún tipo de bloque.Dentro del
if
:En el bloque del
if
no se tiene acceso a ninguna variablex
, por lo tanto javascript subirá al siguiente contexto para buscar una variablex
, al encontrarla recien realiza la sumax + y + z
que sería60
.En el último
console
:La variable
x
esta en el contexto global, por ende accedemos a su valor sin problema alguno.La variable
z
esta dentro del bloqueif
y no deberiamos poder acceder a ella, peroz
esta declarada convar
, esto la convierte en una variable con contexto de función y no de bloque, entonces accedemos a su valor, para poder sumarx + z
que sería40
.var z actually gets hoisted to the outer scope but you said function context (
var, esto la convierte en una variable con contexto de función y no de bloque,
)I think you are confusing notions of context and scope... or maybe in Spanish 'context' means scope...