DEV Community

Krshn
Krshn

Posted on

let, async, await as variable

if i assign let some other value, how interpreter still understand its original use.

Top comments (2)

Collapse
 
thespiciestdev profile image
James Allen • Edited

Top result from googling "var javascript block scope":

The var keyword behaves differently in function scopes and block scopes. A variable declared with var in a function scope can't be accessed outside that function scope. A variable declared with var in a block scope is available outside of that block scope.

Your let b = ... is within the if (...) { ... } block and is destroyed when leaving the block. The var a = ... will live outside the block.

As for the let = ..., async = ... and await = ... assignments, all three of those are being assigned as variables because or your beginning var ... syntax. It wouldn't be good to make variables with these names anyway and your console highlighting them is evidence of this bad practice (IMHO you should be prevented from creating those variables as those names should be reserved, but that could break compatibility between versions.)

Collapse
 
hardy613 profile image
Scott Hardy

The best practice is to pick either var or let, const. Mixing var, let and const together can lead to unexpected behavior.

var is function scoped, let, const are block scoped.