zoukankan      html  css  js  c++  java
  • 聊聊var let const

    1.var声明的变量默认挂载在window对象下,而let和const声明的变量会自动创建块级作用域下
      

    var a = 1;
    console.log(window.a) //1
    let a = 1;
    console.log(window.a) //undefined
    const a = 1;
    console.log(window.a) //undefined
    实际上let,const声明的变量挂载在scope下的script下,通过谷歌浏览器下的调试可以看出

    2.var 声明的变量可以变量提升,let,const不会
    var a = 1;
    function test(){
      console.log(a)
    var a = 2;
    }
    test()//undefined
    在test函数作用域中由于变量提升a虽然在var a=2之前输出但是仍然是声明了只是还未赋值,但是let和const就不一样
    var a = 1;
    function test(){
      console.log(a)
    let a = 2;
    }
    test()//Uncaught ReferenceError
    3.const 声明的变量的特殊性:
       1.一旦声明必须赋值,不能使用null占位
    2.如果声明的是基本数据类型值不能修改,如果声明的是复合数据类型,可以修改其属性
    const b //Uncaught SyntaxError: Missing initializer in const declaration
    const n = null //无法获取变量
    const obj ={a:1,b:2}
    obj.a=2//2


  • 相关阅读:
    CF1391D 【505】
    CF1389C 【Good String】
    CF1364C 【Ehab and Prefix MEXs】
    CF1353E 【K-periodic Garland】
    CF1349A 【Orac and LCM】
    CF1352C 【K-th Not Divisible by n】
    CF413D 【2048】
    CF257B 【Playing Cubes】
    CF267A 【Subtractions】
    2018.8.16提高B组模拟考试
  • 原文地址:https://www.cnblogs.com/myspecialzone/p/11385263.html
Copyright © 2011-2022 走看看