ES6语法

ES6是:ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现。

一、let和const

1、let与var的区别

let有块级作用域 {},也就是说变量只能在{}里面起作用;var 声明的变量是函数作用作用域

let没有变量提升,var声明的变量可以提前调用;let不能提前使用

2、const声明的变量里面的内容不能更改

二、解构赋值

1、数组结构

let arr=[11,22,33,44];
let [a,b,c,d] = arr;
console.log(a);
console.log(b);
console.log(c);
console.log(d);

2、对象结构

let product={
id:"001",
price:4688,
isSale:true,
address:"北京"
}
let {id,price,isSale,address} = product;
console.log(id);
console.log(price);
console.log(isSale);
console.log(address);

三、箭头函数

1、无参写法

const fn = () => console.log("hello")

fn();

2、单句写法

const fn = (a, b) => a + b;
console.log(fn(10, 20));

3、箭头函数中的this

普通函数中的this指向window

function fn() {
    console.log(this); //window
  }
  fn();

箭头函数中的this指的是函数定义位置的上下文。

var obj = {
   name: "tom",
   say: () => {
     console.log(this);//window对象
   }
 };
 obj.say();

四、剩余参数

// ES5中自己定义一个函数 计算所有参数的和
        function sum () {
            //arguments 伪数组  代表函数中所有参数的集合
            //console.log(arguments);
            var sum = 0;
            for(var i = 0; i<arguments.length;i++){
                sum += arguments[i];
            }
            console.log(sum);
        }
        sum(10,20,30)
        // ES6中剩余参数的概念
        function sum2(...args){
            console.log(args);
            let sum = 0;
            args.forEach(item => {
                sum += item;
            });
            console.log(sum);
        }
        sum2(10,20,30)

五、扩展运算符

1、扩展运算符是把数组或者对象转换成用逗号分隔的参数序列

2、合并数组

 let arr1 = ["a", "b", "c"];
      let arr2 = ["d", "e", "f"];
​
      let arr3 = [...arr1, ...arr2]; //['a','b','c','d','e','f']
      console.log(arr3);

六、Array扩展

1、find方法:find是查找数组中符合条件的成员,如果没有找到返回undefined

2、findindex:findIndex是返回满足条件的索引号,查不到返回返回-1

3、includes:判断值是否存在数组中

4、set:去掉数组中重复的

七、字符串扩展

1、模板字符串的特点:

  • 模板字符串可以解析变量

  • 模板字符串里面可以换行,美观

  • 模板字符串中可以嵌套函数

2、startsWith和endsWith

startsWith是判断字符串以什么开头 endsWith是判断字符串以什么结束

八、面向对象

1、创建对象

function Person(name,age){
    this.name=name;
    this.age=age;
}
​
var obj2=new Person('name',23);//实例化构造函数,创建对象

2、类

  • 通过class 关键字创建类, 类名我们还是习惯性定义首字母大写

  • 类里面有个constructor 函数,可以接受传递过来的参数,同时返回实例对象

  • constructor 函数 只要 new 生成实例时,就会自动调用这个函数, 如果我们不写这个函数,类也会自动生成这个函数

  • 多个函数方法之间不需要添加逗号分隔

  • 生成实例 new 不能省略

  • 语法规范, 创建类 类名后面不要加小括号,生成实例 类名后面加小括号, 构造函数不需要加function

class Person{
            constructor(name,age){
                this.name = name;
                this.age = age;
            }
            // 行为
            say(){
                console.log(this.name + this.age + "会说话");
            }
            study(){
                console.log(this.name + this.age+ "会敲代码");
            }
        }
        let person1 = new Person("王建国",18);
        let person2 = new Person("啦啦啦",20);
        // 调用方法  实例化出来的对象.方法名()
        person1.say();
        person1.study();

3、类的继承

// 父类
class Father{   
} 

// 子类继承父类
class  Son  extends Father {  
}  
  实例
  // 父类
        class Father{
            constructor(x,y){
                this.x = x;
                this.y = y;
            }
            getSum(){
                console.log(this.x+this.y);
            }
        }
        var fa = new Father(10,20);
        fa.getSum();
        // 子类继承父类
        class Son extends Father{//子类添加自定义的方法
            constructor(x,y,z){
                super(x,y);//子类使用super关键字访问父类的方法
                this.z = z;
            }
            // 重写
            getSum(){
                console.log(this.x+this.y+this.z);
            }
        }
        var son1 = new Son(10,20,50);
        son1.getSum();

九、模块化

1、作用

  • 防止变量或者函数名冲突

  • 代码复用

  • 便于后期代码维护

2、export和import

先生成json文件 npm init -y 再在文件里添加type:module

导入
export let num = 10;
export function fn() {
  console.log("hello");
}
导出
import { num, fn } from "./01.js";
console.log(num);
fn();

在vscode中按住ctrl+` 打开cmd命令行工具,输入node index.js,

3、default export

方式一:

export default function fn() {
  console.log("hello");
}
import myFn from "./01.js";
myFn();

注意export default导出的函数或者变量在引入的时候不需要添加{},变量或函数名可以和源文件中的名称不一致。

方式二:

let obj = {
  fn() {
    console.log("hello");
  },
  num: 10
};
export default obj;
import myobj from "./01.js";
console.log(myobj.num);
myobj.fn();

4、export和export default的区别

  • export与export default均可用于导出常量、函数、文件、模块等

  • 你可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使用

  • 在一个文件或模块中,export、import可以有多个,export default仅有一个

  • 通过export方式导出,在导入时要加{ },export default则不需要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值