菜单

JavaScript 问题仓库

相关源文件

JavaScript 问题库是一个综合性的 JavaScript 面试问题集合,旨在测试对各种 JavaScript 概念的知识掌握程度。该存储库既可以作为开发者提升 JavaScript 技能的教育资源,也可以作为技术面试的准备工具。它包含一系列结构化的多项选择题,附有详细解释,并组织成多种语言翻译,以使内容能够被全球用户访问。

仓库目的与范围

该存储库包含一系列精选的 JavaScript 问题,涵盖从基本语言语法到高级概念,如异步编程、闭包和原型继承。每个问题都包括:

  • 代码片段或场景
  • 多项选择题答案
  • 正确答案的详细解释和技术原理

这些问题主要旨在测试对 JavaScript 细微差别、边缘情况以及开发者常遇到的常见陷阱的理解。

来源:README.md3-18 nl-NL/README.md1-13

存储库结构

该存储库以主 README.md 文件组织,其中包含原始英文问题,并为每种语言翻译设置了单独的目录。每个翻译版本都遵循类似的结构,以保持跨语言的一致性。

来源:README.md22-50 nl-NL/README.md16-44 id-ID/README.md16-43 zh-TW/README_zh-TW.md16-21

问题格式与结构

每个问题都遵循一致的格式,以提供清晰的学习体验。问题按顺序编号,包含代码片段、多个选项和详细解释。

存储库中的问题结构示例

###### 1. What's the output?

```javascript
function sayHi() {
  console.log(name);
  console.log(age);
  var name = 'Lydia';
  let age = 21;
}

sayHi();
  • A: Lydiaundefined
  • B: LydiaReferenceError
  • C: ReferenceError21
  • D: undefinedReferenceError
答案

#### 答案:D

在函数内部,我们首先使用 var 关键字声明了 name 变量。这意味着该变量会被提升(在创建阶段会设置内存空间),默认值为 undefined,直到我们实际到达定义变量的那一行。在我们尝试打印 name 变量的那一行,该变量尚未定义,因此它仍然是 undefined

使用 let 关键字(和 const)声明的变量也会被提升,但与 var 不同,它们不会被 初始化。在声明(初始化)它们的那一行之前,它们是不可访问的。这被称为“暂时性死区”(temporal dead zone)。当我们尝试在变量声明之前访问它们时,JavaScript 会抛出 ReferenceError

```

来源:README.md54-82 nl-NL/README.md48-76 id-ID/README.md47-73 zh-TW/README_zh-TW.md24-52 zh-CN/README-zh_CN.md12-40

涵盖的 JavaScript 概念

该存储库涵盖了广泛的 JavaScript 概念,这些概念经过精心挑选,旨在全面覆盖该语言的特性和常见挑战。下表显示了主要概念类别以及具体主题的示例:

类别具体概念
变量与作用域提升(Hoisting)、暂时性死区(Temporal dead zone)、块级作用域与函数作用域、var/let/const 的区别
函数普通函数、箭头函数、this 上下文、闭包、函数参数、立即执行函数(IIFE)
对象与原型对象创建、属性访问、原型继承、对象方法、构造函数
异步 JavaScript事件循环、setTimeout/setInterval、Promises、Async/await、回调函数
类型强制转换隐式/显式转换、真值/假值、相等运算符(== vs ===
ES6+ 特性模板字面量、解构、展开语法、剩余参数、模块
DOM 与事件事件传播、事件冒泡、事件捕获、事件监听器
数据结构数组(Arrays)、集合(Sets)、映射(Maps)、类型化数组(TypedArrays)、数组方法

来源:README.md54-1500 nl-NL/README.md76-1000 id-ID/README.md73-800 zh-TW/README_zh-TW.md100-1000

问题示例和分布

该存储库包含从基础到高级的各种问题,涵盖了不同的 JavaScript 概念。以下是一些问题类型的示例:

  1. 变量作用域和提升

  2. 事件循环和异步行为

  3. 对象引用和变异

  4. 类型强制转换和运算符

来源:README.md54-166 nl-NL/README.md48-168 id-ID/README.md47-165 zh-TW/README_zh-TW.md24-144

翻译系统

该存储库提供 20 多种语言的翻译,使全球开发者都能访问其内容。每个翻译版本都保存在自己的目录中,并遵循一致的文件命名约定。

可用语言

语言目录README 文件
英语(原文)rootREADME.md
阿拉伯语ar-ARREADME_AR.md
波斯尼亚语bs-BSREADME-bs_BS.md
中文(简体)zh-CNREADME-zh_CN.md
中文(繁体)zh-TWREADME_zh-TW.md
荷兰语nl-NLREADME.md
法语fr-FRREADME_fr-FR.md
德语de-DEREADME.md
印度尼西亚语id-IDREADME.md
日语ja-JAREADME-ja_JA.md
韩语ko-KRREADME-ko_KR.md
葡萄牙语(巴西)pt-BRREADME_pt_BR.md
罗马尼亚语ro-ROREADME.ro.md
俄语ru-RUREADME.md
西班牙语es-ESREADME-ES.md
泰语th-THREADME-th_TH.md
土耳其语tr-TRREADME-tr_TR.md
越南语vi-VIREADME-vi.md

来源:README.md22-50 nl-NL/README.md16-44 id-ID/README.md16-43 zh-TW/README_zh-TW.md16-21

使用仓库进行学习

该存储库旨在成为一个交互式学习资源。每个问题都鼓励读者在查看答案之前思考 JavaScript 的行为。这种设计鼓励主动学习并有助于巩固 JavaScript 概念。

学习方法

  1. 自我评估:尝试在查看解释之前回答每个问题
  2. 深入理解:阅读详细解释以理解其底层概念
  3. 循序渐进学习:从基础问题开始,逐步过渡到更复杂的问题
  4. 语言练习:使用翻译版本用您偏好的语言练习 JavaScript

该存储库可用于:

  • JavaScript 面试学习指南
  • 经验丰富的 JavaScript 开发者的复习工具
  • 理解 JavaScript 细微之处的学习工具
  • 常见 JavaScript 陷阱和边缘情况的参考资料

来源:README.md11-18 nl-NL/README.md7-12 id-ID/README.md5-10 zh-TW/README_zh-TW.md6-11

对仓库的贡献

该存储库欢迎社区贡献,特别是以下方面:

  • 添加新问题
  • 改进现有解释
  • 创建新翻译
  • 修复错误或拼写问题

贡献者应遵循现有问题格式,并确保翻译准确地传达技术内容和每个解释的细微差别。

来源:README.md14-20 zh-TW/README_zh-TW.md20-21