zoukankan      html  css  js  c++  java
  • ES入门笔一

    ES6一共有6种声明变量的方法

      --ES5只有var 和 function

      --ES6新增了let、const、import和class四种

    ES6新增let和const,用来声明变量,是对var的扩展。
    let基本用法
      -let声明的变量只在let命令所在的代码块内有效
      -for循环很适合let命令
      -不存在变量提升,必须先声明再使用

        --主要减少运行时错误,防止出现意料之外的bug
      -暂时性死区

        --块级作用域内存在let命令,它所声明的变量就绑定这个区域,不会再受外部的影响

        --导致typeof不再是十分安全的操作

      -不允许重复声明

        --咱相同的作用域内,不允许重复声明用一个变量

    块级作用域

      -为什么需要块级作用域?

        --因为原本ES只有全局作用域和函数作用域,没有块级作用域,带来很多不合理的场景

          ---变量提升,导致变量覆盖

          ---循环结束后,变量并没有消失,造成全局变量泄漏

    ES6的块级作用域

      -let为js增加了块级作用域

      -ES6允许块级作用域任意嵌套

        --外层作用域无法读取内层作用域的变量

        --内层作用域可以定义外层作用域的同名变量

        --块级作用域的出现,使得立即执行函数不再必要了

    块级作用域与函数声明

      -ES5规定 > 函数只能在顶层作用域和函数作用域中声明,不能在块级作用域声明

        --严格模式下浏览器才能遵守这个规定

         

      -ES6引入块级作用域,明确允许在块级作用域中声明函数

        --块级作用域中声明的函数在块级作用域之外不可以引用

      -由于运行环境差异太大,应避免在块级作用域内声明函数,若需要,可使用函数表达式而不是函数声明语句

    const命令

      -const声明一个只读的常量,一旦声明,便不可改变

        --由于const声明之后不可改变,所以const一旦声明就必须初始化

        --const作用域与let相同 > 只在声明所在的块级作用域内有效 

        --const声明的常量也不会声明提升,同样存在暂时性死区,一样不可重复声明

    总结:

      -如果区块中存在let和const命令,这个区块对这些指令声明的变量,一开始就会形成封闭作用域

        --因此在此声明之前使用这些变量就会报错,一定要先声明再使用

    ---------------------------------------------------------------------------------

    数组的解构赋值

      -ES6允许按照一定的模式,从数组和对象中提取值,对变量进行赋值 >> 称为解构

      

        --这种写法在本质上属于"模式匹配",只要等号两边的模式相同,左边的变量就会被赋予对应的值

        --若是解构不匹配,变量找不到相对应的值,那么其的值就等于undefined

      -如果等号右边不是数组,即不是可遍历的结构,那么解构将会报错

        --转换为对象以后也不具备可遍历的结构

        --本身就不具备可遍历的结构

      -解构赋值适用于var、let、const以及set结构

        -只要某种数据结构具有可遍历的结构,都可以采用数组的形式的结构赋值

      -解构赋值允许指定默认值

        

          --默认值生效 > 对象的属性值严格等于undefined

       -结构赋值实质是为变量赋值,而不是为模式(属性)赋值

    解构赋值用途

      -交换变量的值

        

      -从函数返回多个值

        --函数只能返回一个值,如果要返回多个值,只能将他们放在对象或数组里返回,有了解构赋值,取值就会非常方便

          

      -函数参数的定义

        --解构赋值可以方便的将一组参数与变量名对应

          

      -提取JSON数据

        --结构赋值对提取JSON对象中的数据,尤其有用

         

      -函数参数的默认值

        --指定参数的默认值,避免在函数体内写逻辑判断语句

     

  • 相关阅读:
    spring+hibernate 整合异常 Class 'org.apache.commons.dbcp.BasicDataSource' not found
    ExtJS+SpringMVC文件上传与下载
    没有权限角色管理功能菜单加载
    java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java he
    js 验证input 输入框
    目录结构
    文件权限命令 linux
    Java 代码完成删除文件、文件夹操作
    js 获取时间不能大于当前系统时间
    hibernate createQuery和createSQLQuery 查询结果count计算
  • 原文地址:https://www.cnblogs.com/nordon-wang/p/6066084.html
Copyright © 2011-2022 走看看