Skip to main content

JS基础

异步

Live Editor
Result
Loading...

JavaScript modules

  • 随着运行大量 JavaScript 脚本的复杂程序的出现,以及 JavaScript 被用在其他环境(例如 Node.js),将 JavaScript 程序拆分为可按需导入的单独模块的机制 就尤为重要。
  • 最新的浏览器开始原生支持模块功能了,浏览器能够最优化加载模块,使它比使用库更有效率(使用库通常需要做额外的客户端处理)。
  • 演示模块的使用的例子集合:simple set of examples

拷贝

tip

In JavaScript, all standard built-in object-copy operations (

  • spread syntax
  • Array.prototype.concat()
  • Array.prototype.slice()
  • Array.from()
  • Object.assign()
  • Object.create() ) create shallow copies rather than deep copies.

Shallow copy

Deep copy

structuredClone()

structuredClone() - the simplest way to clone an object in JavaScript

throw

info

throw 语句用来抛出一个用户自定义的异常,当前函数的执行将被停止(throw 之后的语句将不会执行),并且控制将被传递到调用堆栈中的第一个 catch 块。如果调用者函数中没有 catch 块,程序将会终止。

Ajax(Asynchronous JavaScript and XML)

Asynchronous JavaScript and XML, or Ajax, is not a technology in itself, but rather an approach to using a number of existing technologies together, including HTML or XHTML, CSS, JavaScript, DOM, XML, XSLT, and most importantly the XMLHttpRequest object. 异步 JavaScript 和 XML(或 Ajax) 本身并不是一种技术,而是一种结合使用多种现有技术的方法,包括 HTML 或 XHTML、CSS、JavaScript、DOM、XML、XSLT,以及最重要的 XMLHttpRequest 对象。

当这些技术结合在 Ajax 模型中时,Web 应用程序能够对用户界面进行快速、增量更新,而无需重新加载整个浏览器页面。这使应用程序更快,对用户操作的响应更快。

虽然 Ajax 中的 X 代表 XML,但首选 JSON,因为它的大小更轻,而且是用 JavaScript 编写的。 JSON 和 XML 都用于 Ajax 模型中的信息打包。

解构

const { data } = undefined
// TypeError: Cannot destructure property 'data' of 'undefined' as it is undefined.

Arguments 对象

  • arguments 是一个对应于传递给函数的参数的类数组对象
  • “类数组”意味着 arguments 有 length 属性 并且属性的索引是从零开始的,但是它没有 Array的 内置方法,例如 forEach()map()都是没有的。
  • arguments对象是所有(非箭头)函数中都可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。此对象包含传递给函数的每个参数,第一个参数在索引 0 处。

arguments.callee

callee 是 arguments 对象的一个属性。它可以用于引用该函数的函数体内当前正在执行的函数。这在函数的名称是未知时很有用,例如在没有名称的函数表达式 (也称为“匿名函数”) 内。

如下定义一个递归函数:

但是,匿名函数时应该怎么写:

[1,2,3,4,5].map(function (n) {
return !(n > 1) ? 1 : /* what goes here? */ (n - 1) * n;
});

为了解决这个问题, arguments.callee 添加进来了:

caution

在严格模式下,第 5 版 ECMAScript (ES5) 禁止使用 arguments.callee()。当一个函数必须调用自身的时候,避免使用 arguments.callee(),通过要么给函数表达式一个名字,要么使用一个函数声明。

export

  • export 语句用于从模块中导出实时绑定的函数、对象或原始值,以便其他程序可以通过 import 语句使用它们。
  • 无论您是否声明,导出的模块都处于严格模式。export 语句不能用在嵌入式脚本中。