zoukankan      html  css  js  c++  java
  • 我的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
  • 相关阅读:
    Visual Studio 2013各个版本密钥(亲测可用)
    Duilib bkimage 属性
    VC++ 文件夹的打开
    孙鑫- VC++在对话框程序中让对话框捕获WM_KEYDOWN消息
    OpenCV窗口置顶的方法
    OpenCV设置感兴趣区域(roi)
    Ubuntu 12,04安装ROS Hydro
    VC获取任务栏窗口及其子窗口句柄
    关于调用静态链接库LIB,提示重定义或库冲突的错误
    DuiLib如何禁用双击标题栏窗口最大化
  • 原文地址:https://www.cnblogs.com/web-Rain/p/6047114.html
Copyright © 2011-2022 走看看