ECMAScript

进来看看ES6 Promise最全手写实现

大憨熊 提交于 2020-08-09 13:43:41
写在开头 这几天看到有些技术群在发 Promise 相关的一些实现,自己最近也在看 ES6 的一些内容,于是打算自己也整理一下,提升一下理解; 本文适合一些了解并使用过 Promise 的人,如果你没有了解或使用过 Promise ,建议先看一下 阮一峰 ECMAScript6 入门 之Promise 。 什么是 Promise 异步编程的一种解决方案; Promise 是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果; 特点 对象的状态不受外界影响。 Promise 对象代表一个异步操作,有三种状态: pending (进行中)、 fulfilled (已成功)和 rejected (已失败)。 一旦状态改变,就不会再变,任何时候都可以得到这个结果。 Promise 对象的状态改变,只有两种可能:从 pending 变为 fulfilled 和从 pending 变为 rejected 。 简单实现 流程分析 图片来源 MDN 初始化一个 Promise 原始的 Promise // Promise构造函数接收一个executor函数,executor函数执行完同步或异步操作后,调用它的两个参数resolve和reject const promise = new Promise( function (resolve, reject) { /* 如果操作成功

C++与正则表达式入门

点点圈 提交于 2020-08-09 10:39:36
什么是正则表达式? 正则表达式是一组由字母和符号组成的特殊文本, 当你想要判断许多字符串是否符合某个特定格式;当你想在一大段文本中查找出所有的日期和时间;当你想要修改大量日志中所有的时间格式,在这些情况下,正则表达式都能帮上忙。 简单来说,正则表达式描述了一系列规则,通过这些规则,可以在字符串中找到相关的内容,规则使得搜索的能力更加强大。匹配的过程由正则表达式引擎完成。开发者通常不需要关心正则表达式引擎的实现细节,直接使用其提供的能力即可。 大家可以先想象你正在写一个应用, 然后你想设定一个用户命名的规则, 让用户名包含字符,数字,下划线和连字符,以及限制字符的个数,好让名字看起来没那么丑. 我们使用以下正则表达式来验证一个用户名: 以上的正则表达式可以接受 john_doe , john12_as . 但不匹配 Jo , 因为它包含了大写的字母而且太短了. 本文将以C++语言为例,介绍其中的正则表达式相关知识。 C++ 中正则表达式的API基本上都位于 <regex> 头文件中。 部分代码为了简化书写,都已经默认做了以下操作: #include <iostream> #include <regex> using namespace std; 入门示例 为了使大家有一个直观的感受,文章的开头先通过一些入门示例给大家一个直观的感受。在这个基础之上,再详细讲解其中的细节。

再学JavaScript ES(6-11)全版本语法大全

烈酒焚心 提交于 2020-08-09 09:17:30
JS是前端立身之本,不管框架多花哨,不会JS也是白扯。这门课可以帮助你夯实前端基础,掌握最新的ES6到11语法,稳步提升编程能力。课程带你熟练掌握语法,很多依赖第三方库才能做到的事用原生JS寥寥几行代码就可迎刃而解。 第1章 课程介绍&环境搭建 本章将介绍学习ES新特性的重要性以及课程特点。JS作为前端的立身之本,通过本课程学习不仅会帮助大家掌握ES6的核心语法,还会掌握到ES7~ES11的相关拓展,同时考虑到很多同学刚刚接触前端或者对工程化方法不太了解,为了帮助大家快速进入到学习状态,课程提供配置完整的ES开发脚手架,开箱即用,让大家不再纠结于环境配置而... 第2章 ECMAScript2015(ES6)之必备知识 本章详细介绍ES6中新的声明方式、解构赋值、数组扩展、函数扩展、对象扩展等内容,通过与ES5语法的对比讲解,突显出ES新特性的魅力所在。通过这些必备知识的学习,能够使我们的代码更加严谨,开发效率大大提高。 第3章 ECMAScript2015(ES6)之新特性 本章详细介绍ES6中引入的新特性包括Class、Symbol、Set、Map、Proxy、Reflect,以及字符串、数值、正则表达式的扩展,通过这些新特性的学习,我们能够更快速的通过这些新特性实现我们想要的功能,更加深刻的体会到ES6的强大之处。... 第4章 ECMAScript2015(ES6

ES6 (ECMAScript 6.0) 数值的介绍

跟風遠走 提交于 2020-08-09 04:08:01
ES6, 全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,2015.06 发版。 数值的表示 二进制表示法新写法: 前缀 0b 或 0B 。 console.log(0b11 === 3); // true console.log(0B11 === 3); // true 八进制表示法新写法: 前缀 0o 或 0O 。 console.log(0o11 === 9); // true console.log(0O11 === 9); // true 常量 Number.EPSILON Number.EPSILON 属性表示 1 与大于 1 的最小浮点数之间的差。 它的值接近于 2.2204460492503130808472633361816E-16,或者 2-52。 测试数值是否在误差范围内: 0.1 + 0.2 === 0.3; // false // 在误差范围内即视为相等 equal = (Math.abs(0.1 - 0.3 + 0.2) < Number.EPSILON); // true 属性特性 writable:false enumerable:false configurable:false 最大/最小安全整数 安全整数 安全整数表示在 JavaScript 中能够精确表示的整数,安全整数的范围在 2 的 -53 次方到 2 的

JavaScript基础

ⅰ亾dé卋堺 提交于 2020-08-08 20:38:37
一、JavaScript基础 1.什么是JavaScript? JavaScript是运行在客户端的解释性脚本语言; 扩展: A.HTML、CSS、JavaScript都是在浏览器运行,所以称为客户端技术,会存在 浏览器兼容性; B.所有的编程语言执行方式有两种:编译、解释; C.JavaScript与Java之间不存在任何关系; (小故事:JavaScript最早命名为LiveScript,但为更好推广该产品,于是在 征得Sun同意的情况下,将其命名为JavaScript) D.JavaScript是Netscape(网景)公司在其Netscape Navigator浏览器中首先推出的; E.Microsoft在其IE浏览器中推出JScript与JavaScript抗衡; F.Netscape将JavaScript提交ECMA(欧洲计算机制造商协会),建议 其JavaScript定立为脚本语言的标准,最后定立脚本语言的标准--ECMAScript[简称ES](基本上与JavaScript1.5相同); 所有的浏览器都兼容ECMAScript262-3的标准; ECMAScript最新版本为ES-6; G.JavaScript的由ECMAScript、DOM、BOM组成; H.在EMAScript中规定数据类型、关键字、保留关键字、流程控制语句、内置对象等; I

JavaScript基础知识

亡梦爱人 提交于 2020-08-08 18:34:45
JavaScript基础知识 前言    其实我个人认为 JavaScript 是一种非常随便的语言,也是一门很神奇很强大的语言。    因为之前使用过一段时间的 JavaScript 并做了些学习笔记都是放在 word 上的显得十分杂乱,所以这次也是打算认认真真的重新填一下坑并且认真整理一下 JavaScript 笔记到博客园。    以前在群里聊 JavaScript 的时候会经常出现一张图,我认为这个很有意思,所以就放在这里做一个填坑目标吧。    我还是希望将整个的笔记好好整理一下,并且以一种文档格式进行书写,也方便后期查阅。 理论知识 语言介绍    JavaScript 官方名称是 ECMAScript 是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。    1995年2月Netscape的 布兰登.艾奇 开发了针对网景公司的 Netscape Navigator 浏览器的脚本语言 LiveScript 。之后Netscape与Sun公司联盟后 LiveScript 更名为 JavaScript 。    微软在 JavaScript 发布后为了抢占市场推出了 JavaScript 。为了让脚本语言规范不在混乱,根据 JavaScript 1.1 版本推出了 ECMA-262 的脚本语言标准。

JavaScript 对象的创建和操作

╄→гoц情女王★ 提交于 2020-08-08 05:13:05
<script> // 对象是属性的无序集合,每个属性都是一个名/值对. 属性名称是一个字符串. // 对象种类 // 内置对象(native object)是由ECMAScript规范定义的对象或类。例如,数组、函数、日期和正则表达式都是内置对象 // 宿主对象(host object)是由JavaScript解释器所嵌入的宿主环境(比如Web浏览器)定义的, 常见的宿主对象有window, document等 // 自定义对象(user-defined object)是由运行中的JavaScript代码创建的对象。 // 对象的创建 // 对象直接量是由若干名/值对组成的,名/值对中间用冒号分隔,名/值对之间用逗号分隔,整个对象用花括号括起来。 // 属性名可以是JavaScript标识符(即变量符号,如a,b,c)也可以是字符串。 // 属性的值可以是任意类型的JavaScript表达式,表达式的值(可以是基本数据类型的值也可以是对象类型的值)就是这个属性的值。 //方法一 // let empty = {} //可以是没人任何属性的对象 // let person = { // name : "小小", // "name" : "小小", //加引号定义也可以 ,调用直接 person.name(不加引号,加引号就错了) // height : "175cm", //

如何检查字符串“ StartsWith”是否为另一个字符串?

人走茶凉 提交于 2020-08-06 16:15:48
问题: How would I write the equivalent of C#'s String.StartsWith in JavaScript? 如何在JavaScript中编写等效于C#的 String.StartsWith ? var haystack = 'hello world'; var needle = 'he'; haystack.startsWith(needle) == true Note: This is an old question, and as pointed out in the comments ECMAScript 2015 (ES6) introduced the .startsWith method. 注意:这是一个古老的问题,正如注释中指出的那样,ECMAScript 2015(ES6)引入了 .startsWith 方法。 However, at the time of writing this update (2015) browser support is far from complete . 但是,在撰写此更新(2015)时, 浏览器支持还远远没有完成 。 解决方案: 参考一: https://stackoom.com/question/2iDU/如何检查字符串-StartsWith-是否为另一个字符串 参考二:

【融职培训】Web前端学习 第3章 JavaScript基础教程11 常量变量

江枫思渺然 提交于 2020-08-06 13:53:37
一、ECMAscript概述 ECMAscript简称ES,是JavaScript的标准,我们经常说的ES5,ES6等等,可以称作JavaScript的版本,我们在之前学过的所有JavaScript特性,都是基于ES5版本的,今天我们开始讲解的是ES6标准的特性。ES6已更名为ES2015,ES7等后续的版本,我们都可以统称为ES2015+ 二、变量和常量 ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。我们之前一直使用var定义变量,在ES6版本中,我们可以使用let定义变量,下面我们来说说var与let的区别 块级作用域 ES5只有全局作用域和函数作用域,没有块级作用域的概念,这带来了很多不合理的场景。 实例代码如下: 1 for ( var i = 0;i<10;i++ ){ 2 console.log(i); // 0-9 3 } 4 console.log(i); // 10 因为没有块级作用域,所以我们在for语句的外面仍然能获取i的值,在实际开发中,这是一个不可理喻的场景,我们希望的是这个i只在for语句内有效,所以再ES6中添加了块级作用域的概念,我们可以用let声明变量,问题就解决了 实例代码如下: 1 for (let i = 0;i<10;i++ ){ 2 console.log(i); //

phpstorm/webstorm 编辑器中vue项目的JS总是报JSHint 错误的设置

孤者浪人 提交于 2020-08-06 13:17:05
ES6标准 这是因为编辑器没有设置ES6标准模板,按顺序找到设置的地方 File | Settings | Languages & Frameworks | JavaScript | Code Quality Tools | JSHint,右边use config files不要勾选,然后往下拉会看到一行 “warn about incompatibilies with the specified ECMAScript version”,点击SET单词设置成6,点击Apply,设置成功。 详细图片 phpstorm版本2019.1 来源: oschina 链接: https://my.oschina.net/u/4326175/blog/4393256