JavaScript复习笔记 (十四)ES6

本文详细介绍了JavaScript中的ES6核心特性,包括var、let、const的区别,箭头函数的使用,解构赋值的灵活性,模板字符串的便利性,class的面向对象编程,模块系统的导入导出,以及Promise的异步处理。通过实例解析,帮助开发者更好地理解和应用ES6特性。
摘要由CSDN通过智能技术生成

主要包括:箭头函数、解构、类、promise 和模块

一、var,let,const

var
声明变量时,是全局声明的,如果在函数内部声明则是局部声明的。
let
类似var,但有一些额外的功能。
在代码块、语句或表达式中使用 let 声明变量,其作用域仅限于该代码块、语句或表达式。
const
const 分配给变量的对象(包括数组和函数)仍然是可变的。
使用 const 声明只能防止变量标识符的重新分配(会报错)。

默认情况下,一些开发人员更喜欢使用 const 分配所有变量,除非他们知道需要重新分配值。 只有在这种情况下,他们才使用 let。

为了确保数据不被改变,JavaScript 提供了一个函数 Object.freeze
——任何更改对象的尝试都将被拒绝,如果脚本在严格模式下运行,将抛出错误。

二、箭头函数

const myFunc = () => "value";
//带参数
const multiplier = (item, multi) => item * multi;
//带默认函数
const increment = (number, value=1) => number + value;

rest
rest 操作符可以用于创建有一个变量来接受多个参数的函数。
这些参数被储存在一个可以在函数内部读取的数组中。

const sum = (...args) => {
  return args.reduce((a, b) => a + b, 0);
}

展开操作符
使用 spread 运算符展开数组项
...arr 返回一个解压的数组。 也就是说,它展开数组。

  • 返回一个对象需要用()
const getMousePosition = (x, y) => ({ x, y });

三、解构赋值

const user = { name: 'John Doe', age: 34 };
const { name, age } = user;

//指定新的变量名
const { name: userName, age: userAge } = user;
//从嵌套对象中分配变量
const { johnDoe: { age: userAge, email: userEmail }} = user;

从数组中分配变量:
可以在数组解构中使用逗号分隔符,来获取任意一个想要的值

const [a, b,,, c] = [1, 2, 3, 4, 5, 6];
//交换ab的值
[a,b]=[b,a]

在函数的参数里直接解构对象:

const stats = {
  max: 56.78,
  min: -0.75,
};

const half = ({max,min}) => (max + min) / 2.0; 
half(stats)

四、模板字符串

这是一种可以轻松构建复杂字符串的方法。

const person = {
  name: "Zodiac Hasbro",
  age: 56
};
const greeting = `Hello, my name is ${person.name}!
I am ${person.age} years old.`;

使用反引号 ` , 可以在字符串中包含其他表达式,例如 ${a + b}

ES6定义函数:

const person = {
  name: "Taylor",
  sayHello() {
    return `Hello! My name is ${this.name}.`;
  }
};

五、class

class SpaceShuttle {
  constructor(targetPlanet) {
    this.targetPlanet = targetPlanet;
  }
}
const zeus = new SpaceShuttle('Jupiter');

当用 new 创建一个新的对象时,构造函数会被调用。

ES6 class 命名:首字母大写驼峰命名法

使用 getter 和 setter 来控制对象的访问 ( 隐藏内部的实现细节 )

通常会在私有变量前添加下划线(_)

class Book {
  constructor(author) {
    this._author = author; 
  }
  // getter
  get writer() {
    return this._author;
  }
  // setter
  set writer(updatedAuthor) {
    this._author = updatedAuthor;
  }
}

六、模块

使用了 module 类型的脚本可以使用 import 和 export 特性

<script type="module" src="filename.js"></script>
  1. export,import :
//用 export 导出:
const add = (x, y) => {
  return x + y;
}
export { add };
//通过 import 复用 JavaScript 代码 :
import { add, subtract } from './math_functions.js';
  1. 用 * 从文件中导入所有内容 :
//import 语句会创建一个对象。 对象包含 js 文件里的所有导出,可以像访问对象的属性那样访问里面的函数
import * as stringFunctions from './string_functions.js'
//使用
stringFunctions.uppercaseString("hello");
  1. export default 默认导出 :
    ( 在文件中只有一个值需要导出的时候,通常会使用这种语法。 )
//默认导出:
//命名函数
export default function add(x, y) {
  return x + y;
}
//匿名函数
export default function(x, y) {
  return x + y;
}
//导入:自定义变量名不需要 {}
import add from "./math_functions.js";

七、Promise

  1. Promise 是构造器函数,需要通过 new 关键字来创建。
    该函数有两个参数 - resolvereject。 来判断 promise 的执行结果。
  2. Promise 有三个状态:pending、fulfilled 和 rejected
    ( 创建的 promise 阻塞在 pending 状态里,调用 resolve 和 reject 结束 )
  3. 当 promise 完成 resolve 时会触发 then 方法
  4. 使用 catch 处理 Promise 失败的情况
const makeServerRequest = new Promise((resolve, reject) => {
  // responseFromServer 设置为 false,表示从服务器获得无效响应
  let responseFromServer = false;

  if(responseFromServer) {
    resolve("We got the data");
  } else {  
    reject("Data not received");
  }
})
.then(result =>console.log(result))
.catch(error=>console.log(error));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值