Home  >  Article  >  Web Front-end  >  What are var, let, const in JavaScript? Usage of var, let, const (code)

What are var, let, const in JavaScript? Usage of var, let, const (code)

青灯夜游
青灯夜游Original
2018-09-18 15:47:181261browse

This chapter will introduce to you what var, let and const are in JavaScript? Usage of var, let, const (code). It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

1, var

is a global variable declared in the global window and is an attribute of the global object window.

var sum = 0
console.log(window.sum)  // 0
console.log(sum);        // 0

The variables declared in the function are local variables

function foo(){
    function bar(a){
        i = 3;
        console.log( a + i );  // 3 之后是无限循环11
    }
    var  i = 0
    for( i ; i <= 10; i++){
        bar( i * 2 )
    }
}
foo()

This code can be written like this

function foo(){
    function bar(a){
        i = 3;
        console.log( a + i );
    }
    var i
    i = 0
    for( i ; i <= 10; i++){
        bar( i * 2 )
    }
}
foo()

The function is promoted before the variable is promoted. After entering the for loop, bar is The parameter of the function is 0, so the first output is printed as 3. The focus is here i = 3. It will look for the declaration of i in the current scope. If there is no declaration, it will search up along the scope chain, in foo Found it, so i in foo becomes 3. After executing i, we get i= 4, and when we execute bar, we get the following 11. This keeps looping

2 , let and const

are two new ways to declare variables in ES6. Repeated declaration of the same variable in the same scope is not allowed. There is no variable promotion.

Since there is no variable promotion, this variable cannot be used before the variable is declared. Variables declared by var will be promoted. , but the value is undefined

In ES5, only functions have block-level scope, but in ES6, there is not only function scope. This is thanks to let and const

var b = 1;
{
    let b = 2;
}
console.log(b);  // 1

The curly braces are equivalent to a block-level scope

var a = []
for(let i=0; i<10;i++){
    a[i] = function(){
        console.log(i);
    };
    console.log(i) //[function,function..]  总共10个
}
console.log(a)
a[8]()  // 8

After changing let here to var, you will find that all output will become 10.

The i declared by var is actually a global variable, which is at the same level as the array a. Every time the for loop changes the value of i, it will be copied based on the original value. When the loop ends, i = 10, so no matter how it is called, the output is 10

The i declared by let is only in the current This block is valid. There is a block for each cycle, so a new variable i is created every time it loops. One difference between cont and let is that const is used to declare constants. Once declared, its value cannot be changed. But if const declares a reference type value

const a = {}
a.name = &#39;circle&#39;
console.log(a);   // Object {name: "circle"}

const stores the address value of this object, so it can only guarantee that the address value remains unchanged, but cannot guarantee the attributes in this object. cannot be changed

The above is the detailed content of What are var, let, const in JavaScript? Usage of var, let, const (code). For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn