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);


 
 
 
原文地址:https://www.cnblogs.com/panghexin/p/11151236.html