ES6基础学习

本文详细介绍了ES6的关键特性,包括更严谨的语法、变量的let与const、解构赋值的用法,以及函数与箭头函数的差异。此外,还探讨了面向对象编程中的class和继承,并讲解了模块化的概念和实践。通过对这些核心特性的学习,开发者可以写出更高效、更易于维护的JavaScript代码。
摘要由CSDN通过智能技术生成

一,什么是ES6

  • ECMAScript6(简称ES6),又称ECMAScript2015(ES2015)
  • 2015年6月正式发布,是JS语言的下一代标准

二,为什么要学

  • 更严谨的语法,更高效的代码
  • 更新的特性,更多的功能
  • 新特性举例:箭头函数的使用场景——数组遍历
let arr = [1,2,3]
arr1.map(function(X){
  return x*x;
});



let arr2 = [1,2,3]
arr2.map(x=>x*x);
  • 兼容性解决方案成熟(Babel)

学习重点

  • 变量,常量,解构赋值
  • 函数,箭头函数
  • Class VS function
  • 模块化

一,变量

        1, 声明变量 let

        2. let的三大特性

                特性一:不存在变量提升,必须要先声明,再使用

                特性二:不能重复声明

                特性三:块级作用域,变量只再代码块内有效

function func() {
  let n = 5;
  if(true){
    let n = 10;
    console.log(n);
  };
  console.log(n);
}

 二,常量

        1. 什么是常量?

                 一旦声明,常量的值不能改变

        2. 声明常量

                const PAGE_SIZE = 10

        3. const的三大特征

                特性一:声明必须赋值(必须初始化)

                 特性二:常量是只读的,不能被重新赋值

                特性三:块级作用域,只在代码块内有效

三,解构赋值

        1. 数组的解构赋值

                按顺序将值赋值给对应的变量

let [a,b,c] = [1,2,3]

                ...表示解构运算符,将剩余的内容赋值

let [c,...d] = [1,2,3]

                防止解构失败,给变量默认值

let [g,h=100] = [1]

        2. 对象的解构赋值

                按顺序将值赋值给对应的变量

let {foo,bar} = {foo:'aaa', bar:'bbb'}

                可以解构对象中的常量,方法

console.log(Math.PI)
let {PI, sin} = Math
console.log(PI)
console.log(sin(PI/2))

                解构赋值失败,则为unidefined,可设置为默认值

let {x,y=5} = {x:1}

                重新指定变量名称

let {color:sky} = {color:'blue'}
console.log(sky)

                复杂对象的解构赋值

let {title, author:{name,age}} = {
    title:'新闻标题',
    author:{
        name:'张三',
        age:23
    }
}

console.log(name)
console.log(age)

        3. 字符串的解构赋值

                字符串可以看做是“伪数组”

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

let {length} = 'hello'
console.log(length)

四,函数与箭头函数

1. 函数指定默认值

function point(x=0, y=0) {
    console.log(x);
    console.log(y);
}

2. 未设置默认值且不传对应参数时,值为undefined

function point(x,y=0) {
    console.log(x);
    console.log(y);
}

ps 将带默认值的参数放最后

3. 注意:参数变量(形参)不可重复声明

// 不被允许
function point(x=0, y=0){
    let x = 0;
    const y = 1;
}

4. 当形参为对象时,可使用解构赋值

function fetch(url, {body='', method='GET', headers={}}) {
    $.ajax({
        url,
        method
    })
}

5. 对象中的函数简写

let UserB = {
    name: '张三',
    age: 23,
    info() {
        return this.name + this.age
    }
}

6. 箭头函数

let f1 = v => v;


// 等同于
let f1 = function(v) {
    return v;
}

函数体包含多条语句,使用{}包含语句块

let f3 = (a,b) => {
    console.log(a,b);
    return a + b;
}

箭头函数的使用场景——数组遍历

let arr1 = [1,2,3];

arr1.map(function(x){
    return x*x;
});



let arr2 = [1,2,3]
arr2.map(x=>x*x)

注意:箭头函数体内的this指向定义时所在的对象,而非实例化后的对象(在函数定义时绑定)

7. 理解this

this指函数执行过程中,自动生成的一个内部对象,是指当前的对象,只能在当前函数内部使用

运行时跟运行环境绑定:浏览器this===window   Node环境this===global

当函数被作为某个对象的方法调用时,this指向那个对象

五,JS中的面向对象编程

1. ES6以前的面向对象编程

function Point(x,y){
    this.x = x;
    this.y = y;
}

Point.prototype.toString = function() {
    return this.x + this.y
}

var p = new Point(1,2)

2. ES6中引入class关键字,实现面向对象编程

class Point {
    constructor(x,y) {
        this.x = x;
        this.y = y;
    }

    toString() {
        return this.x + this.y
    }
}


let p = new Point(1,2)
console.log(p.toString())

3. 关于this的指向

        类方法中的this指向类的实例

        静态方法中的this指向类

六,ES6中的继承

1. ES6中使用extends关键字实现类的继承

2. 属性表达式

        类的属性名,可以采用表达式,使用[]来引用

let methodName = 'getArea';
class Square {
    ['a' + 'bc'](){},
    [methodName](){}
}

七,模块化

1.思考:什么是模块化?它有什么好处?

  • 模块是对内部逻辑的封装,只对外提供接口
  • 一个js文件就是一个模块
  • ES6中使用export关键字对外暴露接口(导出)
  • ES6中使用import关键字导入一个接口

2. export的使用

  • 直接导出 
  • 批量导出
  • 使用export default默认导出
  • 注意:语句的位置(代码顶层,不能再语句块内)

3. import的使用

  • 导入需要的部分内容
  • 导入全部内容,使用as指定别名
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值