zoukankan      html  css  js  c++  java
  • js es6中let const和var的区别

    let,const是es6种新增的关键字;

    let的特点:

    1. let声明的变量只在let所在的代码块有效
    2. let没有变量提升功能,所以作用域只在所声明的代码块中,在该代码外之外都访问不到
    3. let变量只能声明一次,不能重复声明(同一个作用域下)
    {
        let a=1;
        console.log(a);//1
    }
    console.log(a);//Uncaught ReferenceError: a is not defined,报错不会继续往下执行
    let a=2;
    console.log(a);
    let a=2;
    console.log(a);//2
    {
        let a=1;
        console.log(a);//1
    }
    console.log(a);//2

    var的特点:

    1. var可以重复声明变量
    2. var有变量提升的租用,所以声明变量是全局作用域,但js种函数是可以控制var声明的变量是局部作用域
    {
        var a=1;
        console.log(a);//1
    }
    console.log(a);//1
    var a=2;
    console.log(a);//2

    const的特点:

    1. const是声明一个只读的常量,一旦声明,常量的值就不能改变
    2. 一旦声明必须赋值,否则会报错
    const PI=3.1415926;
    console.log(PI)//3.1415926
    
    console.log('==================')
    
    const PI2;
    console.log(PI2)//Uncaught SyntaxError: Missing initializer in const declaration
    //一旦声明必须初始化,否则报错
    
    const obj={a:1};
    obj.a=2;
    console.log(obj)//{a:2}
    //此时obj是个对象,obj存储的是对象的地址,地址没有改变,所以此时不会报错
    
    obj=function(){
        return 2;
    }
    console.log(obj)//报错
    //把一个对象重新赋值给了obj,此时改变了对象的指针指向

    let 和const都有封闭性死区的特性:

    let a=123;//代码块外定义了一个变量a
    if(true){
        console.log(a);//报错Uncaught ReferenceError: a is not defined
        let a=111;//代码块内定义了一个变量a,
        console.log(a);//111
    }
    var A=1;
    if(A>0){
        console.log(A);//A is not defined;
        const A=666;
    }

    es6明确规定:代码内如果存在let或者const,代码块会对这些命令声明的变量会从代码块的开始就形成一个封闭的作用域。代码块内,在声明变量a/A之前使用它就会报错。

    备注:从{开始,到}结束,代码形成一个封闭的区域,不管代码块外边是否用let/const对当前变量进行了定义,代码块中的变量都不受影响。因为不在同一个作用域下,如果是同一个作用域,变量是不能重复声明的。

  • 相关阅读:
    ASP.NET CORE 2.0 模板 (Admin LTE)
    MVC5+EF6 完整教程17--升级到EFCore2.0
    MVC 5 + EF6 完整教程16 -- 控制器详解
    MVC 5 + EF6 完整教程15 -- 使用DI进行解耦
    MVC 5 + EF6 入门完整教程14 -- 动态生成面包屑导航
    MVC5+EF6 入门完整教程13 -- 动态生成多级菜单
    MVC5+EF6 入门完整教程12--灵活控制Action权限
    MVC5+EF6 入门完整教程11--细说MVC中仓储模式的应用
    LeetCode 504. Base 7
    LeetCode 594. Longest Harmonious Subsequence
  • 原文地址:https://www.cnblogs.com/fanfanZhao/p/12179752.html
Copyright © 2011-2022 走看看