我知道的ES6

ES6

块级作用域

之前只有函数作用域和变量作用域
函数作用域:
全局作用域:

{
 var name = "China_forrest"
}
console.log("name",name)  //"China_forrest"
let:定义变量
{
let name = "China_forrest"
}
console.log("name",name)    //name is not defined
cosn定义常量
{
const name = "China_forrest"
}
console.log("name",name)    
// Assignment to constant variable

变量提升

编写中

字符串模板

let name = "China_forrest"
let number = 100
console.log(`${name}一共贡献了${name}条`)

函数扩展

  • 参数默认值
const test = (name = "linhao") => {
console.log('name',name)   
}
test()    //  "linhao"
test("test1");    // "test1"
  • 箭头函数、展开运算符
const test = (x,y) => {
  console.log("name")
}

箭头函数与普通函数的区别

1.箭头函数是匿名函数,不能作为构造函数,也就是不能使用new
var B = ()=>{
  value:1;
}
var b = new B();
//报错提示:Uncaught TypeError: B is not a constructor

2.箭头函数不绑定arguments,取而代之的是rest ...解决
function test(x,y) {
   console.log("arguments",arguments)
}
test(1,2);

在这里插入图片描述


const test = (...rest) => {
console.log('name', rest)
}
test(1,23)   //name (2) [1, 23]
3.普通函数和箭头函数this
普通函数:

this指向他的直接调用者,例如 obj.function ,那么function中的this就是obj;
默认情况下(非严格模式下,未使用'use strict',没找到直接调用者,则this指的是window)
严格模式下,没有直接调用者,则this指向undefined
使用call,apply,bind(ES5新增)绑定的,this指向的是绑定的对象

箭头函数:
不绑定this,也就是自己本身没有htis,会自动捕获其所在的上下文对象中的this
通过ES5中的call()/apply()/bind()都改变不了其指向。
var obj = {
  a: 10,
  b: () => {
    console.log(this.a); //undefined
    console.log(this); //window
  },
  c: function() {
    console.log(this.a); //10
    console.log(this); //obj{...}
  }
}
obj.b();
obj.c();


通过 call()apply() 方法调用一个函数时,只是传入了参数
而已,对 this并没有什么影响

var obj = {
  a: 10,
  b: function(n){
    var f = (v) => v + this.a;
    return f(n);
  },
  c: function(n) {
    var f = (v) => v + this.a;
    var m = {a:20};
    return f.call(m,n);
  }
}
console.log(obj.b(1)); //11
console.log(obj.c(1)); //11
4.箭头函数没有原型属性
var a = ()=>{
  return 1;
}
function b(){
  return 2;
}
console.log(a.prototype);//undefined
console.log(b.prototype);//object{...}
5.箭头函数不能当做generator函数,不能使用yield关键字
6.箭头函数不能换行
var a = ()
=>1; //SyntaxError: Unexpected token =>

对象扩展

  • Object.key、values、entries
const obj = {name:"tom",age:19,sex:"男"}
console.log(Object.keys(obj))
console.log(Object.values(obj))
console.log(Object.entries(obj))

在这里插入图片描述

  • object属性key的扩展、对象方法简写,计算属性
const name = "imooc"
const obj = {
  name,
  [name]:'hello',
  hello:function() {},
  hello(){}
}
console.log(obj)

在这里插入图片描述

  • 展开运算符(不是ES6标准,但是babel也支持)
    拓展运算符
const obj1 = {name:'imooc',course:'React'}
const obj2 = {type:'IT',item:'woniu'}
console.log(obj1);
console.log(obj2);
console.log({...obj1,...obj2})

在这里插入图片描述

解构赋值

函数也可以多返回值了

  • 数组解构
  • 对象解构

提供class的语法糖

  • 是prototype的语法糖
  • Extends继承
  • Constructor构造函数
1//demo1.js
export const name = 'hello world'

export function sayHello(){
    console.log("imooc rocks")


export default fucntion test() {
 console.log("imooc rocks")
}

对应的导入方式:
//demo2.js
import { str, f } from 'demo1' //
import * as App from 'demo1'

console.log(App)
在这里插入图片描述

默认导出

//demo1.js  只能有一个默认导出
//export default const str = 'hello world'
export default function test() {
console.log('hello imooc')
}
对应的导入方式:

//demo2.js  
//import str from 'demo1' //导入的时候没有花括号
import course from './demo1'

其他

新的特性(不在ES6范围),被babel支持

  • 对象扩展符(Babel-plugin-transform-object-rest-spread插件),函数绑定
  • 装饰器
  • async await
  • Promise
  • 迭代器和生成器
  • 代理Proxy

常用代码片段

数组

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值