ecmascript6标准教程-GitHub 上 12 个超级流行的 JavaScript 技巧和技巧项目

大家好,我是你们的猫哥,一只不爱吃鱼也不爱喵喵的超级猫~

前言

毛哥是个猫星人,在GitHub上呆了很长时间,所以发现了很多好的后端开源项目和常用方法,在这里分享给大家。

1. 30秒的代码

该项目是关于满足您所有开发需求的简短代码段。 里面有一些常用的、非常经典的代码,非常值得学习!

例如,JavaScript 模块分为 All、Array、Browser、Date、Function、Math、Node、Object 和 String,方便学习。

例如:你必须知道的 4 个 JavaScript 数组方法

Array.prototype.map()

const arr = [123];
const double = x => x * 2;
arr.map(double); // [2, 4, 6]

Array.prototype.filter()

const arr = [123];
const isOdd = x => x % 2 === 1;
arr.filter(isOdd); // [1, 3]

Array.prototype.reduce()

const arr = [123];

const sum = (x, y) => x + y;
arr.reduce(sum, 0); // 6

const increment = (x, y) => [...x, x[x.length - 1] + y];
arr.reduce(increment, [0]); // [0, 1, 3, 6]

Array.prototype.find()

const arr = [123];
const isOdd = x => x % 2 === 1;
arr.find(isOdd); // 1

再举个例子:如何用JavaScript实现sleep函数?

同步版本

const sleepSync = (ms) => {
  const end = new Date().getTime() + ms;
  while (new Date().getTime() < end) { /* do nothing */ }
}

const printNums = () => {
  console.log(1);
  sleepSync(500);
  console.log(2);
  console.log(3);
};

printNums(); // Logs: 1, 2, 3 (2 and 3 log after 500ms)

异步版本

const sleep = (ms) =>
  new Promise(resolve => setTimeout(resolve, ms));

const printNums = async() => {
  console.log(1);
  await sleep(500);
  console.log(2);
  console.log(3);
};

printNums(); // Logs: 1, 2, 3 (2 and 3 log after 500ms)

其实里面提到的例子也提供了API和技巧的解释,方便读者理解,这里就不写了。

想了解更多经典js代码片段请看下面仓库

2.33-js-概念

JavaScript 开发者应该理解的 33 个概念

创建该项目是为了帮助开发人员掌握 JavaScript 概念。 这不是必需的,但它可以作为未来学习的手册(JavaScript)。

目录

调用堆栈
原始类型
值类型和引用类型
隐式, 显式, 名义和鸭子类型
== 与 ===, typeof 与 instanceof
this, call, apply 和 bind
函数作用域, 块级作用域和词法作用域
闭包
map, reduce, filter 等高阶函数
表达式和语句
变量提升
Promise
立即执行函数, 模块化, 命名空间
递归
算法
数据结构
消息队列和事件循环
setTimeout, setInterval 和 requestAnimationFrame
继承, 多态和代码复用
按位操作符, 类数组对象和类型化数组
DOM 树和渲染过程
new 与构造函数, instanceof 与实例
原型继承与原型链
Object.create 和 Object.assign
工厂函数和类
设计模式
Memoization
纯函数, 函数副作用和状态变化
耗性能操作和时间复杂度
JavaScript 引擎
二进制, 十进制, 十六进制, 科学记数法
偏函数, 柯里化, Compose 和 Pipe
代码整洁之道

而且每个主题都包含相关的优秀文章和视频,非常适合学习。

3.javascript问题

高级 JavaScript 问题列表。

从基础到中级:测试您的 JavaScript 知识、刷新您的知识或准备编码笔试!

例如下面会输出什么?

let a = 3
let b = new Number(3)
let c = 3

console.log(a == b)
console.log(a === b)
console.log(b === c)

答案:C

解释:

new Number() 是一个内置函数构造函数。 虽然它看起来像一个数字,但它实际上不是一个真正的数字:它有很多额外的功能,但它是一个对象。

当我们使用 == 运算符时,它仅检查两者是否具有相同的值。 由于它们的值均为 3,因此返回 true。

那么,当我们使用 === 运算符时,值和类型都应该相同。 new Number() 是一个对象而不是数字,因此返回 false。

4. JavaScript 30

使用原生 JavaScript 在 30 天内完成 30 个项目。

HTML、CSS 和 javascript 解决方案每天都在完成。

5. 代码大战

与leetcode类似,也是在平台上与其他人一起完成真实的代码挑战,以提高自己的技能。

与其他平台相比,codewars给出的问题更贴合实际工作和生活。 很多问题都会给出话题背景,更有沉浸感。

提高技能的可能性:用社区创建的型来挑战自己,以提高各种技能。 掌握您当前选择的语言,或扩展您对新语言的理解。

要加入这个社区,您必须首先通过回答测验来证明您的技能。

6.ES6入门教程

每个入门后端都应该知道的ES6开源书籍。 毛哥刚进后端的时候,就跟阮一峰老师学习了开源ES6的内容,一直实用到现在!

《ECMAScript 6入门教程》是一个开源的JavaScript语言教程,全面介绍了ECMAScript 6引入的句型新特性。

本书涵盖了ES6与之前版本ES5的所有差异ecmascript6标准教程,对涉及的句型知识进行了详细介绍,并给出了大量简单易懂的示例代码。

本书难度为高级,适合已经掌握ES5的读者了解该语言的最新发展; 也可以作为寻找新句型的参考指南。

如果您是JavaScript语言的初学者,建议先完成《JavaScript语言入门教程》,然后再阅读本书。

7. JavaScript 教程

本教程全面介绍了 JavaScript 核心语法,涵盖了 ES5 和 DOM 规范的所有内容。

也是阮一峰老师写的。 确实很容易理解,非常适合后端学习。

不得不说,学识渊博的人写的技术文章是非常容易理解的。

在内容上,从最简单的开始,循序渐进,由浅入深,力求清晰易懂。

所有章节都有大量的代码示例,易于理解和模仿,可以在实际项目中使用,即学即用。

本教程作为JavaScript语言的入门教程,适合初学者。 学习之后,你可以承担实际的Web开发工作,也适合作为日常使用的参考指南。

目录

入门篇
数据类型 
运算符 
语法专题
标准库
面向对象编程
异步操作 
DOM
事件
浏览器模型
附录:网页元素接口

8. 现代 JavaScript 教程

根据最新的 JavaScript 标准进行基准测试。 通过简单但足够详细的内容,为您讲解JavaScript的基础到高级知识。

本课程的核心由两部分组成,涵盖 JavaScript 编程语言和浏览器行为。 还有一系列专题文章。

JavaScript 编程语言

在这里,我们将从头开始学习 JavaScript,并学习相关的中间概念,例如 OOP。

本教程重点关注语言本身,我们默认使用最小环境。

浏览器:文档、事件、界面

了解如何管理浏览器页面:添加元素、操纵元素大小和位置、动态创建小部件以及与访问者交互。

其他文章

本教程前两部分中未涵盖的其他主题的目录。 这里没有明确的层次结构,您可以按照您需要的顺序阅读文章。

9.MDN

MDN Web 文档站点提供有关开放 Web 技术的信息,包括用于网站和渐进式 Web 应用程序的 HTML、CSS 和 API。

Mozilla、微软、谷歌、三星和 W3C 将合作使 MDN 成为网络上最好的文档。

所以在这个平台上学习web技术是比较权威的。

来自开发人员、服务开发人员。

10. 干净的代码 JavaScript

优秀的JS代码规范。

例如:相同类型的变量使用相同的关键字

坏的:

getUserInfo(); 
getClientData(); 
getCustomerRecord();

好的:

getUser();

另一个例子:使用可搜索的命名

在开发过程中,我们阅读代码的时间远多于编写代码,因此保证代码的可读性和可搜索性就显得尤为重要。 记住,如果你没事可做,就不要欺骗自己。

坏的:

//525600到底啥意思?
for (var i = 0; i < 525600; i++) {
  runCronJob();
}

好的:

// 声明为全局变量
var MINUTES_IN_A_YEAR = 525600;
for (var i = 0; i < MINUTES_IN_A_YEAR; i++) {
  runCronJob();
}

11.TypeScript 入门教程

从JavaScript程序员的角度总结思考,一步步理解TypeScript。

这个教程确实是我见过的最完整、最简单、最容易理解的 TypeScript 教程!

《TypeScript入门教程》全面介绍了TypeScript强大的类型系统。 完整简洁,示例丰富ecmascript6标准教程,比官方文档更容易阅读。 非常适合作为初学者学习TypeScript的第一本书。 ——阮一峰

例如,类型别名:类型别名用于为类型提供新名称。

简单的例子:

type Name = string;
type NameResolver = () => string;
type NameOrResolver = Name | NameResolver;
function getName(n: NameOrResolver): Name {
    if (typeof n === 'string') {
        return n;
    } else {
        return n();
    }
}

在上面的示例中,我们使用 type 创建类型别名。

类型别名通常与联合类型一起使用。

12.w3学校

前端必须知道的Web技术教程平台,虽然很多后端都知道,但是还是有必要提一下。

领先的网络技术教程 - 全部免费。

在W3School,您可以找到您需要的所有网站建设教程。

从基本的 HTML 到 CSS,再到高级的 XML、SQL、JS。

这里学习后端最好的部分是有一个可以学习的演示,它可以验证你的功效或输出。

终于