• es6的let,const


    1.es6 新增的let const 命令

      let用来定义一个局部变量,故名思意就是只在当前代码块可用

      1.1 let 声明的变量不存在变量提升(var 声明的变量存在变量提升)且代码块内 暂时性死区 且不允许重复声明

        列子

    var b = 3;
    function fn () {
        console.log (b)
        var b = 4
    }
    fn(); // undefined 
    //由于存在变量提升 实际代码是
    /* var b = 3;
    function fn () {
        var b = undefined
        console.log (b)
        b = 4
    } */
    //使用let 定义
    function fn1() {
        console.log (b)
        let b = 4
    }
    fn1();
    //报错 提示b没有定义   使用let 定义的b 不存在变量提升 并且也访问不到外面定义的b ,暂时性死区
     function fn2() {
      let aa = 3
      let aa = 4
     }
       fn2() //报错,dentifier 'aa' has already been declared 不能重复定义

      1.2 const 常量

      定义:声明后的常量就不能修改,不能重复定义 ,也只在当前代码块内有用,常量定义时必须先赋值

    const ba  //报错必须先赋值
    
    {
        const bb = 4
    }
    console.log(bb) //bb未定义, 只在当前代码块可用
    
    const bc = 56
    bc = 54 //报错,常量定义后不能修改值
    
    const person = {
        name: 'czklove',
        age: '18' 
    }
    person.age = 24 // 不报错,对于引用类型,常量只是不改变他的地址
    //可以使用 Object.freeze 冻结
    const child = Object.freeze({
        name: 'czklove',
        age: '18'
    })
    child.name = 'lll' //正常模式下该行代码忽略 严格模式下报错
    
    //如果对象的属性也是引用类型 ,则需要冻结对象上所有的属性,调用递归的方法
    

      1.3 var 

      es6 之前除了在方法里定义的var 变量之外,所有var 定义的var 变量都是全局可用

    var c = 44
    function fn3() {
        c = 56
        b = 45
    }
    console.log(b) //报错 b没有定义
    for(var i = 1;i < 9; i++) {
    }
    console.log(i) //9  for ()里定义的变量 全局可用 
    //变量声明提升 可以见let 的例子
    

      

      

      

  • 相关阅读:
    菜鸟快速自学java00之变量类型
    php 接口和抽象类
    java 三大特性之多态性
    设计模式
    依赖注入
    Java设计模式工厂模式
    php 设计模式之策略模式
    大数的概述
    熟悉常用的Linux操作
    GridView动态添加列
  • 原文地址:https://www.cnblogs.com/czkolve/p/10596009.html
Copyright © 2020-2023  润新知