• 我的ES6学习之路(一)


    强烈推荐  阮一峰写的《ECMAScript6入门》

    let和const命令

    let命令:

      let用于声明变量,用法和var相似,但是不完全相同,有以下几点区别

      ① let命令只在当前作用域中有效;

      ② let不会发生‘变量提升’的现象,变量一定要声明后在使用他,否则会报错。

        问题:ES6支持ES5 但是如果发生以下情况也会报错

    1 var demo = 13;
    2 if(true){
    3   demo = "abc";    //这里也会报错
    4   let demo;    
    5 }

        原因:只要在块级作用域内存在 let ,const 命令就会形成一个‘暂时性死区’ ,即使全局中声明了该变量也会报错

        连带结果:typeof 不是很管用啦!

    if(true){
      typeof x;     //报错
      let x;
      typeof y;      //undefined  
    }

      ③ let 不允许在相同作用域内重复声明

      ④ 块级作用域:

        ES5:只存在全局作用域和函数作用域

        ES6: 添加了块级作用域,而且还允许其嵌套使用,也可以直接使用  {块级作用域执行内容... //和立即执行函数功能一样 } 还允许在块级作用域内声明函数是不是方便的

      ⑤ 虽然let声明的变量不会被提升,但是函数的声明还是会被提升的!

    const命令:

      ①添加的常量的声明命令-------声明后为只读属性不允许改变

      ②其他特点和let一样,不会提升,会形成暂时性死区,

    变量的‘解构赋值’

      解构赋值:ES6允许按照一定的模式,从数组和对象中提取值,然后对变量进行赋值。

     let [a,b,c] = [1,2,3] // 如果是ES5的话只能一个个的声明变量并赋值啦! 

      解构赋值的本质应该就是一种匹配模式,只要等号两边的模式相同就可以进行赋值啦!如果匹配不到 就会返回undefined给变量

    let [a, b, ...c] = ["a"]
    
    a   // "a"
    b   // undefined
    c   // []   返回空数组是  ‘...’  的功劳哦

      还有“不完全解构”    也就是值多于变量

    let [a, [b], c] = [1,[2 , 3], 4]
    a  // 1
    b  //2     [2,3]没有完全解构
    c  //4
  • 相关阅读:
    stm32 IAP + APP ==>双剑合一(转)
    ClassNotFoundException和NoClassDefFoundError的差别
    浏览器对文字的解析
    hive 配置注意事项及初始化hive 元数据
    移植MonkeyRunner的图片对照和获取子图功能的实现-Appium篇
    导出excel——弹出框
    机器学习类似度计算方法选择理论根据
    数据结构
    八.200多万元得到的创业教训--从3款产品学到的3点
    深圳市安卓工控设备有限公司简单介绍
  • 原文地址:https://www.cnblogs.com/web-Rain/p/6047114.html
Copyright © 2020-2023  润新知