你不知道的 javascript【推荐】

你不知道的 Javascript【推荐】攻略

1. 简介

你不知道的 Javascript 是一本非常优秀的JavaScript教程,分为上下两册,包含了JavaScript的许多高阶概念和一些常见误解,非常适合深入学习Javascript的开发者。本教程文字讲解详细,理论与实践相结合,是你深入学习Javascript的好帮手。

2. 内容概述

上册

上册主要介绍了Javascript的作用域和闭包相关的内容:

  • 第1章: 作用域是什么

讲解了Javascript作用域的概念,以及使用 var letconst 声明变量的区别。同时介绍了块级作用域和函数作用域。

  • 第2章: 词法作用域

通过介绍词法环境,引出了Javascript使用的词法作用域模型。

  • 第3章: 函数 vs 块级作用域

在Javascript中,函数可以创造出作用域,也可以赋值给变量。而在块级作用域(使用let和const)中,无法这样做。本章详细介绍了这一特性。

  • 第4章: 提升

介绍提升的概念,详细讲述了Javascript内部对于变量和函数定义的处理以及它们之间的冲突。

  • 第5章: 作用域闭包

强调了闭包是Javascript中最强大的特性之一。同时,深入讲解了闭包是如何工作的,以及闭包在实际开发中的应用场景。

下册

下册主要介绍了Javascript的异步编程和JavaScript中一些高级特性,包括:

  • 第1章: 异步和性能

介绍了Javascript中的异步编程以及其在性能方面的作用;讲解了回调函数、Promise等异步编程的实现方式,以及它们之间的差异。

  • 第2章: 回调

延续上一章的内容,本章具体讲解了回调(callback)函数,以及如何防止回调函数中的错误。

  • 第3章: Promise

深入讲解Promise,其设计思想,以及如何用Promise实现异步操作。

  • 第4章: 生成器

介绍了ES6新增的生成器(generator),以及它的迭代器和异步编程实现方式。

  • 第5章: 异步流程控制

深入介绍了异步流程控制实现的四种方式,包括回调函数,Promise,生成器和async/await语法。

3. 示例

以下是两个关于上册中闭包的示例:

  1. 创建计数器
function createCounter() {
  let count = 0;
  return function increment() {
    count++;
    console.log(count);
  }
}

let counter = createCounter();
counter(); // 1
counter(); // 2
counter(); // 3

上面的代码中,createCounter 函数返回一个闭包函数,该闭包函数持有 count 变量,并在每次被调用时将其增加。在这个例子中,count 的值在使用它的最外层函数 createCounter 中声明,但只能在 inner 函数中访问。

  1. 缓存函数
function memoization(fn) {
  const cache = {};
  return function(arg) {
    if(cache[arg]) {
      console.log("cache");
      return cache[arg];
    }else{
      console.log("not cache");
      const result = fn(arg);
      cache[arg] = result;
      return result;
    }
  }
}

function multiply(x) {
  return x * x;
}

const memoMultiply = memoization(multiply);
memoMultiply(2);
memoMultiply(2);

上面的代码中,memoization 函数返回一个带有缓存功能的闭包函数。 它将在执行 fn(arg)之前检查传递给它的 arg 参数是否已经在缓存中。 如果是,则直接返回缓存中的结果,如果不是,则执行新的 fn(arg) ,将结果存入缓存,并返回该结果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:你不知道的 javascript【推荐】 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • 利用JS判断数据类型的四种方法

    当我们使用JavaScript编写程序时,经常会遇到数据类型的问题,因此判断数据类型变得非常重要。现在我们将介绍四种方法来判断数据的类型。 一、使用typeof关键字 使用 typeof 关键字可以判断 JavaScript 的数据类型。 typeof 在判断数值、字符串、布尔、undefined、symbol 类型的时候都能准确判断。 但是当判断 null…

    JavaScript 2023年6月10日
    00
  • 详解jQuery的Cookie插件

    详解jQuery的Cookie插件攻略 1. 介绍 jQuery的Cookie插件是一个实用的、轻量的JavaScript工具,用于操作浏览器中的cookie(饼干)。该插件可用于读取、设置、删除和检查cookie,它为cookie操作提供了简洁的API接口,使得开发者能够轻松地处理cookie数据。 2. 安装 你可以从GitHub上下载该插件的最新版本,…

    JavaScript 2023年6月11日
    00
  • JS遍历DOM文档树的方法实例详解

    下面是关于“JS遍历DOM文档树的方法实例详解”的完整攻略。 标题 JS遍历DOM文档树的方法实例详解 简介 在编写JavaScript代码时,遍历DOM文档树是非常常见的操作。例如,查找某个元素、对所有子元素进行操作等等。本文将介绍以下5个遍历DOM文档树的方法: getElementById getElementsByTagName getElement…

    JavaScript 2023年5月28日
    00
  • js 实现文件上传样式详情

    引言 本篇攻略将为您详细讲解如何使用 JavaScript 实现文件上传样式,主要包括以下步骤: 样式设计 上传文件处理 实现上传进度条 处理上传状态 同时,为了让读者更好理解,我们将提供两条关于 JavaScript 实现文件上传样式的示例,希望能为您带来帮助。 样式设计 在实现样式前,我们需要先确定好样式。常见的文件上传样式一般都是基于 input 标签…

    JavaScript 2023年5月27日
    00
  • TypeScript命名空间讲解

    TypeScript命名空间讲解 在 TypeScript 中可以使用命名空间来避免命名冲突,它们可以将代码划分为逻辑上相近的部分。命名空间可以帮助我们组织代码并减少全局命名冲突。 命名空间的定义 在 TypeScript 中,命名空间使用 namespace 关键字进行定义。 namespace MyNamespace { // 这里放命名空间中的代码 }…

    JavaScript 2023年6月10日
    00
  • DOM操作一些常用的属性汇总

    DOM(文档对象模型)操作是前端开发中非常重要的一环,掌握 DOM 操作能够帮助我们轻松地对 HTML 页面进行修改和交互。 以下是一些常用的 DOM 属性汇总: 获取元素 我们常常需要找到特定的 HTML 元素并进行修改,这时就需要用到 DOM 获取元素的方法。 getElementById 通过元素的 ID 获取特定元素。 const element =…

    JavaScript 2023年6月10日
    00
  • Javascript 日期对象Date扩展方法

    JavaScript 日期对象 Date 扩展方法是用于处理日期时间的工具,对于处理时间日期的任务非常有用。本文将深入地探讨 JavaScript 日期对象 Date 的基本知识和常见的扩展方法,让你掌握 JavaScript 中的日期和时间处理。 什么是 JavaScript 日期对象 Date? JavaScript Date 对象是用来处理日期和时间的…

    JavaScript 2023年5月27日
    00
  • JS之判断是否为对象或数组的几种方式总结

    JS中判断一个变量是否为对象或数组是开发过程中经常会用到的操作。可以使用以下几种方式进行判断: 1. typeof 操作符 typeof 操作符通常用来判断一个变量的类型,可以通过判断返回值是否是 “object” 来判断一个变量是否为对象。需要注意的是,也可以使用 typeof 判断一个数组,但是返回值是 “object”,所以需要进行额外的判断。 以下是…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部