es6——let、const、箭头函数、rest参数、扩展运算符、Symbol、迭代器

let定义变量

  1. 变量不能重复声明
  2. 块级作用域
  3. 不存在变量提升(必须先声明后使用)
  4. 不影响作用域链

var是函数作用域

// 出现异步回调时,var变量提升
  for(var i=1;i<=3;i++){
    setTimeout(() => {
      console.log(i);//三个4
    }, 500);
  }

  // 使用let可解决此问题

const定义常量

  1. 一定要赋初始值
  2. 值不能修改
  3. 块级作用域
  4. 声明数组和对象的时候,可以对其中的属性或值修改,不会报错

箭头函数

  1. this是静态的,始终继承外层作用域的this,在定义时确定
  2. 没有自己的this
  3. this指向不可变
  4. 不能当构造函数,不能new
  5. 不能使用arguments变量(保存函数所有传递的实参,是个对象),但是有rest参数(获取函数实参)
  6. 适合于与this无关的——定时器、数组方法的回调,不适合于事件回调、对象的方法

普通函数

  1. 谁调用函数,this就指向谁
  2. this指向可以通过call、apply、bind改变
  3. 可以当构造函数,可以new

rest参数

代替arguments(是对象),获取函数实参

rest(是数组),作为函数参数要放在最后

function fn1(...args){
    let aa=typeof args
    console.log(args);
    console.log(aa);
    // 是数组可以使用数组的所有方法
    args.push(1)
    
  }
  fn1('222')

扩展运算符...

将数组转换为,分隔的参数序列

const a=['a','b','c']
  function fn(){
    console.log(arguments);
    
  }
  // fn(a)        [a,b,c]
  fn(...a)     //a,b,c变成序列了

作用

1.数组的合并

const a=['a','b','c']
  const b=['d','e','f']
  console.log(...a,...b);//a,b,c,d,e,f

2.数组的浅拷贝

const a=[1,2,3]
  const b=[...a]
  console.log(b);//[1,2,3]

3.将伪数组转为真数组

七种基本数据类型

String、Number、Boolean、Null、Understand、Symbol、BigInt

Symbol

主要作用是创建一个唯一的、不可变的标识符。

 // 创建Symbol
  // 为其添加一个描述,不会影响其唯一性
  let sy=Symbol('s1')
  let sy2=Symbol('s1')
  console.log(sy===sy2);  //false

迭代器

for...of 循环按顺序逐个处理从可迭代对象获取的值。循环对值的每次操作被称为一次迭代,而循环本身被称为迭代可迭代对象。每次迭代都会执行可能引用当前序列值的语句。

当 for...of 循环迭代一个可迭代对象时,它首先调用可迭代对象的 Symbol.iterator]() 方法,该方法返回一个迭代器,然后重复调用生成器的 next() 方法,以生成要分配给 variable 的值的序列。

for...of 循环在迭代器完成时退出(即迭代器的 next() 方法返回一个包含 done: true 的对象)。你也可以使用控制流语句来改变正常的控制流程。break 语句退出循环并跳转到循环体后的第一条语句,而 continue 语句跳过当前迭代的剩余语句,继续进行下一次迭代。

const a=['a','b','c']
  for(let i of a){
    console.log(i);//a  b c  数组的每一个值
    
  }


// 原理
  let iterator=a[Symbol.iterator]()
  console.log(iterator.next());
  console.log(iterator.next());
  console.log(iterator.next());
  console.log(iterator.next());//最后一个  done:true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值