zoukankan      html  css  js  c++  java
  • ES6入门

    ES6(ES6其实还是js,只不过多了多种方法)
    1.js声明变量的方式
      var function let const Class import 定义变量的关键字
      备注:不能忽略函数的形参,函数的私有变量
      var 定义变量
        var 变量能够提升但是不能定义,给window添加了一个对应的属性
      function
        funtion 既可以提前声明,同时还定义了(定义:所谓的定义,就是给这个变量赋值了)
      let
        let是 es6提供的一种声明变量的方式
        (1) 没有变量提升的功能,在声明之前不能使用
        (2) 不能重复的声明(var 可以,但是后者会覆盖前者)
        (3) 不会给window添加属性

    2. 作用域
      学习作用域的目的:就是为了处理变量的
      var 的作用域
        var 声明的变量 ,作用域分为两种全局作用域和局作用域
      全局作用域
        在winidow 下声明的变量后者函数外声明的变量
      局部作用域
        在函数内声明的变量,只能作用于函数内


    3.块级作用域
      带 {} 的都是块级作用域,if(){} for(){} 对象{}
      var 没有块级作用域这个概念,let 和 const 有块级作用域这个概念
        (1) 在块级作用域下 var 和 function 跟在window下是一样的,function 有个特殊的,在块级作用域
        前只会提前声明不会定义。
        (2) 在块级作用域下 let 和 const 声明的变量是私有的,外面访问不到
          {let a=12}
          console.log(a)
        (3) for 循环下 let 声明的变量不会泄露
        var list=document.querySelector("#list").querySelectorAll("li");
        for (var i = 0; i < list.length; i++) {
          list[i].onclick=function(){
          alert(i) 3 (如果是let的话每次都是 0 1 2,此时是var)
          }
        }
        事件是异步的,for 循环之后 i 是3并且 i 还是全局的,点击了 li 最后alert 出i ,i此时是3,所
        以 i 最后都会弹出3

    4.块级作用域和对象的区分
      { } 如果想表示对象不能放在首行,就是{ } 前面没有任何的东西,如果有了就是对象。没有就代表块级作用域
      块级作用域

      {
        "name":"hexin",
        "age":"10"
      }

      对象
      ({
        "name":"hexin",
        "age":"10"
      })

    5.暂时性死区
      如果块级作用域内使用了 let 和 const 命令声明变量了,这个区域就会被这个变量强制绑定,凡是在声明之前
      这些变量都是不可用的,使用会报错,这就是暂时性死区

      var a=45;
      {
        console.log(a);
        let a=12;
        console.log(a)
      }
      console.log(a)

      暂时性死区函数场景
      function fn(a=b,b=7){
        console.log(a,b)
      }
      fn();
      使用变量 b 在定义变量 b 之前了,出现了暂时性死区

    6.let a=a 和 var a=a的区别
      let a=a 报错,赋值运算是从左往右,右边使用变量a,发现a没有声明,而let语法
      规定,不能在没定义前使用变量,所以报错

      var a=a 不报错,因为var可以变量提升,在等号赋值的时候,是从右往左,使用变量
      a,此时a是undefined,赋值时就是把undefined赋值给a,所以a还是undefined。


    7.函数传参默认值
      (1) 写法上 有默认值的写在后面,没有默认值的写在前面
      (2) 如果传对应的参数,就不要默认值了,不是先赋默认值,是直接用实参去覆盖

      function fn(a,b=7){
        console.log(a+b)
      }
      fn(4,5);


     
     
     
  • 相关阅读:
    Linux 命令
    oracle sqlplus链接和sid
    sql 应用记录
    数据库接口基础类 oracle,sql server
    oracle 触发器
    js json -> <-object
    Docker学习总结(三)--常用命令
    MySQL之binlog日志
    Redis学习总结(九)-- Redis常用技巧
    Redis学习总结(八)--Redis云平台
  • 原文地址:https://www.cnblogs.com/panghexin/p/11151236.html
Copyright © 2011-2022 走看看