ES6方法

symbol

symbol是一种基本类型,代表唯一值

例如:
    let s=Symbol(1)
    let s2=Symbol(1)
    console.log(s===s2)
    console.log(typeof s)

let/const

letvar区别
1. var可以重复定义,let不能重复定义
2. var有变量提升,而let没有变量提升
3. var没有块级作用域,而let有块级作用域

作用域:
  定义:变量的使用范围
  分类:
  	1.全局作用域:在函数外部定义的变量范围,任何位置都可以访问
  	2.局部作用域:函数内部定义的变量范围,只能在当前函数内部访问,函数外部不能访问
  	3.块级作用域:用letconst在大括号中定义的变量范围


letconst区别:

区别:let定义变量,const定义常量
相同点:都不能重复定义,都有块级作用域,都不能变量提升

注意:如果const定义的是基本类型,值不能重新赋值,如果const定义的一个对象,对象中的属性值可以更改

箭头函数

箭头函数和普通函数的区别?
  
  区别1:
  		普通函数的this通常谁调用,this就指向谁
  		箭头函数自身this,它的this永远指向它所在父级function函数的this(上下文)
   区别2:
      普通函数可以new实例化,箭头函数不能new
   区别3:
      普通函数有arguments,箭头函数没有arguemnts
     

一、普通函数创建方式:
	1.函数声明
	
    function getName() {

        console.log('我是getName函数')
    }
	
	2.函数表达式
	  let getUserInfo=function() {
        console.log('我是getUserInfo函数')
    }
 二、箭头函数:
  (参数1,参数2,...)=>{
    //代码块
    
  }

解构赋值

解构赋值:可以解构对象,也可以解构数组

例如:
  //对象的解构
    let obj = {
        name: 'alice',
        age: 20,
        address: '北京'
    }

    //  let aaa='age'
    //  let name=obj.name
    //  let age=obj.age

    //    let {name:username,age:nianling,address:dizhi}=obj

    //    console.log(username)
    //    console.log('年龄:',nianling)
    //    console.log(dizhi)

    //数组解构
    let arr = [100, 200, 300, 'hello'];
    let [first, second] = arr
    console.log(first)
    console.log(second)
    let res = {
        code: 0,
        msg: '成功登录',
        data: {
            token: '23qtw3jkwtjlk34j6tklw456jlk45w',
            username: 'admin',
            password: '123456',
            info: ['运动', '本科', '程序员']
        }
    }

    res.data.info[0]
    let {
        code,
        msg,
        data: {
            token,
            username,
            info: [sport, xueli, career]
        }
    } = res
    console.log('token:', token)
    console.log('sport', sport)
    console.log('xueli', xueli)

模板字符串

JS定义字符串有3种形式:
	单引号:‘’
	双引号:“”
	反引号:`` 特点:可以解析变量
	
	
	例如:
	let str='hello'
    let str2="welcome"
    let str3="北京"
    let result=`我爱${str3}`

    console.log(result)

默认值

通常默认值是给函数形参通过=号设置默认值
  /*
    //ES6
    let getInfo=function(title='我是默认标题',content='内容区') {
        console.log(title)
        console.log(content)
    }
    */

     //ES5时代
    let getInfo=function(title,content) {
        title=title || '我是默认标题111'  
        content=content || '内容区111'
        console.log(title)
        console.log(content)
    }

    getInfo('我是前端开发工程师')

扩展(展开)运算符和rest操作符

...

1.扩展(展开)运算符

  展开对象:
  展开数组:
  

2.rest操作符

例如:
  let obj = {
        name: 'alice',
        age: 20,
        address: '北京'
    }

    let obj2={
        hobby:'运动',
        xueli:'本科'
    }

    //需求:合并obj和obj2,最终效果:
   let result={...obj,...obj2}
   // let result2=Object.assign({},obj,obj2)
    
   /*
    for(let key in obj2) {
        obj[key]=obj2[key]
    }
    */

    //console.log('result:',result)

    //展开数组
    let arr=[22,33,45]
    let arr2=[444,33,22]
    let mergeArr=[...arr,...arr2]
  //  arr.push.apply(arr,arr2)
   // console.log('arr:',arr)

   function getData(title,...args) {
     console.log('title:',title)
     console.log('args:',args)
   }

   getData('显示数据:',22,33,44)

map和set

map:是对象的升级版本

 let m1=new Map()
 添加:m1.set()
 获取:m1.get()
 删除:m1.delete()
 获取长度:m1.size()
  
set:是数组的升级版本,但只能存放不重复的数据

 let s1= new Set()
 添加:s1.add()
 获取:通过forEach或for of遍历
 
 
 s1.forEach(item=>{
  console.log(item)
})
 for(let [key,value] of s1.entries() ) {

   console.log(value)
}

例如:实现数组去重
let arr=[3,34,5,45,3,2,3,2,2,2,2]

可以用Set对数组去重
例如:[...new Set(arr)]

Promise

promise解决问题:解决回调地狱的异步方案
promise有三种状态:成功,失败,进行中,注意:只要执行,要不成功,要不失败
proimise抛出的API:
   .then()
   .catch()
   Promise.all([a(),b(),c()]).then(res=>{[a的值,b的值,c值]})
   finally()无论成功失败都会执行
   race([a(),b(),c()])只要有一个状态改变,就返回
   ....

async/await(ES7)

用同步的思想编写异步代码

function getData() {

   return new Promise((resolve,rejct)=>{
     
      if(res.code===0) {
      resolve(res.data)
      }
     
   })
}

async function 函数名() {

   //let result=await getData()
   
	
}

await必须配合async使用,await后面通常跟一个异步函数(promise返回的形式)

字符新增API

includes():检测字符串是否含有某个字符
startsWith():检测字符串中是否以某个字符开头
endsWith():检测字符串中是否以某个字符结尾
repeat():重复复制多个字符 str2.repeat(10)
padStart(总位数,要填充的字符):位数不够在前面填充
padEnd(总位数,要填充的字符)位数不够在后面填充
trimStart():删除字符串左侧空白 和trimLeft()一样
trimEnd():删除字符串右侧空白 和trimRight()一样
trim():删除左右两侧的空白

数组新增API

Array.from() 将类数组或迭代器类型数据转换为数组 和[...类数组或迭代器]作用一样
entries(),返回key和values
keys() 返回keys
values() 返回value
find() 查询满足条件的数组元素
findIndex() 查找满足条件的数组下标

模块化

export {a,b,c,}
export default 
imort  xxx from '封装的组件或函数,axios方法'

class类

function Person() {


}


//创建一父类
    class Site {
      constructor(name) {
        this.sitename = name
      }
      present() {
        return '我喜欢' + this.sitename
      }
    }


//继承类
    class Runoob extends Site {
      constructor(name, age) {
        super(name)
        this.age = age
      }
      show() {
        return this.present() + ', 它创建了 ' + this.age + ' 年。'
      }
    }

    let noob = new Runoob('菜鸟教程', 5)
    document.getElementById('demo').innerHTML = noob.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值