ES6
文章平均质量分 92
__Zoe__
Time will tell.
展开
-
Promise 对象详解
💡 前端异步编程经历了几个阶段。💡 目前在简单场景使用 callback,复杂场景使用 promise 和 async/await,由于generate 的api不易理解并且不易于使用,所以很少使用。原创 2022-08-07 18:38:59 · 689 阅读 · 0 评论 -
JavaScript模块化
模块化的含义:把逻辑分块、各自封装、相互独立,同时自行决定引入哪些外部模块以及暴露自身的哪些模块。模块化的好处:避免命名冲突(减少命名空间污染) 更好的分离,按需加载 更高复用性 高可维护性JS中常见的模块:1. IIFE模式:匿名函数自调用(闭包)环境:浏览器端原理:利用闭包原理创造出一个独有的函数作用域来保护私有变量例子:<script type="text/javascript" src="module.js"></script><转载 2021-07-05 14:53:04 · 118 阅读 · 0 评论 -
理解和使用ES6中的Symbol
ES6中引入了一种新的基础数据类型:Symbol,不过很多开发者可能都不怎么了解它,或者觉得在实际的开发工作中并没有什么场景应用到它,那么今天我们来讲讲这个数据类型,并看看我们怎么来利用它来改进一下我们的代码。这是一种新的基础数据类型(primitive type)Symbol是由ES6规范引入的一项新特性,它的功能类似于一种标识唯一性的ID。通常情况下,我们可以通过调用Symbol()函数来创建一个Symbol实例:let s1 = Symbol()或者,你也可以在调用Symbol()函数时传入转载 2020-08-28 11:03:47 · 117 阅读 · 0 评论 -
JS基础知识 - 继承、原型与原型链的理解
class下面举例说明(Student、Teacher 继承People类):class People { // 构造函数 constructor(name) { this.name = name; } eat = () => { console.log( `${this.name} eat something` ) }}class Student ...原创 2019-11-29 11:05:50 · 162 阅读 · 0 评论 -
ES6 Module语法的export、export default、import
ES6 模块的设计思想是尽量静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量。ES6 模块是编译时加载,使得静态分析成为可能。ES6 模块不是对象,而是通过 export 命令显示指定输出的代码,再通过 import 命令输入。1、```在这里插入代码片...原创 2019-09-06 10:36:40 · 300 阅读 · 0 评论 -
Generator函数-协程
传统的编程语言中早有异步编程的解决方案(其实是多任务的解决方案),其中一种叫做”协程“(coroutine),意思是多个线程互相协作,完成异步任务。协程有点像函数,也有点像线程。它的运行流程大致如下:第一步,协程A开始执行。第二步,协程A执行到一半,进入暂停状态,执行权转移到协程B中。第三步,(一段时间后)协程B交还执行权。第四步,协程A恢复执行。上面流程的协程A就是异步任务,因为...原创 2019-07-26 09:34:27 · 186 阅读 · 0 评论 -
实例:消除魔术字符串
魔术字符串指的是,在代码之中多次出现、与代码形成强耦合的某一种具体的字符串或数值。风格良好的代码,应该尽量消除魔术字符串,而由含义清晰的变量代替。function getArea(shape, options) { var area = 0; switch (shape) { case 'Triangle': // 魔术字符串 area = .5 * options.width...原创 2019-06-30 11:11:35 · 417 阅读 · 0 评论 -
ES6 Null 传导运算符
在编程过程中,如果读取对象内部的某个属性,往往需要判断该对象是否存在。比如,要读取 message.body.user.firstName,安全的写法如下:const firstName = (message && message.body && message.body.user && message.body.user....原创 2019-06-30 10:32:43 · 299 阅读 · 0 评论 -
ES6数组的扩展
Array.from():用于将两类对象转化为真正的数组(类似数组的对象和可遍历对象)。Array.of():用于将一组值转化为数组。Array.of(2,5,,8); // [2,5,undefined,8]数组实例1、copyWithin(target, start, end) 在当前数组内部将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。会修改当前数组。t...原创 2019-06-18 15:30:06 · 94 阅读 · 0 评论 -
块级作用域
ES5 只有全局作用域和函数作用域,ES6 let实际上为JavaScript新增了块级作用域。为什么需要块级作用域?1、内层变量可能会覆盖外层变量。2、用来计数的循环变量泄露为全局变量块级作用域的内容:外层代码块不受内层代码块影响外层作用域无法读取内层作用域的变量内层作用域可以定义外层作用域的同名变量...原创 2019-06-17 18:09:39 · 122 阅读 · 0 评论 -
变量提升和暂时性死区
变量提升现象:即变量可以在声明之前使用,值为undefined。var 命令会发生“变量提升”现象;let 命令不存在“变量提升”。// var 的情况console.log(foo); // 输出 undefinedvar foo = 2;// let 的情况console.log(bar); // 输出 ReferenceErrorlet bar = 2;暂时性死区:ES...原创 2019-06-17 17:50:37 · 1169 阅读 · 1 评论 -
ES6-属性的遍历
可枚举属性:描述对象的 enumerable 属性成为“可枚举性”,如果该属性为 false,就表示某些操作会忽略当前属性。(for…in,Object.keys(),JSON.stringify())。1、for…in:循环遍历对象自身的和继承的可枚举属性(不含 Symbol 属性)。2、Object.keys(obj):返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含 S...原创 2019-06-19 19:36:41 · 134 阅读 · 0 评论 -
Object.is()和Object.assign()
1、Object.is():比较两个值是否严格相等(Same-value equality的算法)+0 不能与 -0NaN 等于自身+0 === -0 // trueNaN === NaN // falseObject.is(+0, -0); // falseObject.is(NaN, NaN) // true2、Object.assign(target, s...原创 2019-06-19 18:46:03 · 133 阅读 · 0 评论