zoukankan      html  css  js  c++  java
  • 【ES6】var let和const的区别;

    1.var存在变量提升且声明的变量会挂载在window上,let和const不存在变量提升;

    console.log(c);
        var c = 'c';//undefined(会进行c的提前解析,再执行。var默认为undefined,只有赋值才会变成对应的值);
        let c = 'c';//let不存在变量提升,不会进行域解析;
    var a = 100;
        console.log(a,window.a);//100,100
        let a=100;
        console.log(a,window.a);//100 undefined
        const a =100;
        console.log(a,window.a);//100 undefined

    2.同一作用域下能重复定义同一个名称

    var d = 1;
        var d =100;
        console.log(d);//100
        let e = 1;
        let e = 100;
        console.log(e);//报错has already been declared;
     let e = 1;
         e = 100;
     console.log(e);//100,不可以重复定义,但能改变值

    3.有严格的作用域 (var函数作用域,let块级作用域)

     // var 在当前函数作用域中可拿到值,函数外不行
        function fun(){
            var n = 10;
            if(true){
                var n =100;
            }
            console.log(n);
        };
        fun()//100;
        // let
        function fun(){
            let n = 10;
            if(true){
                let n =100;
            }
            console.log(n);
        };
    
        fun()//10,n=10作用在函数中,n=100作用在if判断中,作用域不同。

    4.const 声明一个只读的常量,一旦声明,常量的值就不能改变;(与var对应的区别同let)

    const m = 100;
         m=200;
       console.log(m);//error
      const r;//error 一旦声明就要赋值,不能只声明不赋值;
    const obj = {};
        obj.name ="baby";
        console.log(obj);//{name:"baby"}复杂数据类型的值可以改变,内存地址不可以改变,地址内的值可以改变;
        const arr =[];
        arr.push(1);//1
  • 相关阅读:
    [bbk5102] 第38集 第四章 Flashback Database 02
    index
    [bbk5110] 第41集 第四章 Flashback Database 05
    支持向量机SVM基本问题
    凸优化小结
    博客基本操作
    感知机vs支持向量机
    PAYPAL商户集成指南-IPN&PDT变量列表
    一个IBM人的离职泪:伟大公司,SB老板,苦逼员工 (zz.IS2120.BG57IV3)
    Google Reader 7.1停止服务
  • 原文地址:https://www.cnblogs.com/tianping-ondo/p/14669319.html
Copyright © 2011-2022 走看看