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();
Lydia 和 undefinedLydia 和 ReferenceErrorReferenceError 和 21undefined 和 ReferenceError#### 答案: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 概念,这些概念经过精心挑选,旨在全面覆盖该语言的特性和常见挑战。下表显示了主要概念类别以及具体主题的示例:
| 类别 | 具体概念 |
|---|---|
| 变量与作用域 | 提升(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 概念。以下是一些问题类型的示例:
变量作用域和提升
事件循环和异步行为
对象引用和变异
类型强制转换和运算符
来源:README.md54-166 nl-NL/README.md48-168 id-ID/README.md47-165 zh-TW/README_zh-TW.md24-144
该存储库提供 20 多种语言的翻译,使全球开发者都能访问其内容。每个翻译版本都保存在自己的目录中,并遵循一致的文件命名约定。
| 语言 | 目录 | README 文件 |
|---|---|---|
| 英语(原文) | root | README.md |
| 阿拉伯语 | ar-AR | README_AR.md |
| 波斯尼亚语 | bs-BS | README-bs_BS.md |
| 中文(简体) | zh-CN | README-zh_CN.md |
| 中文(繁体) | zh-TW | README_zh-TW.md |
| 荷兰语 | nl-NL | README.md |
| 法语 | fr-FR | README_fr-FR.md |
| 德语 | de-DE | README.md |
| 印度尼西亚语 | id-ID | README.md |
| 日语 | ja-JA | README-ja_JA.md |
| 韩语 | ko-KR | README-ko_KR.md |
| 葡萄牙语(巴西) | pt-BR | README_pt_BR.md |
| 罗马尼亚语 | ro-RO | README.ro.md |
| 俄语 | ru-RU | README.md |
| 西班牙语 | es-ES | README-ES.md |
| 泰语 | th-TH | README-th_TH.md |
| 土耳其语 | tr-TR | README-tr_TR.md |
| 越南语 | vi-VI | README-vi.md |
来源:README.md22-50 nl-NL/README.md16-44 id-ID/README.md16-43 zh-TW/README_zh-TW.md16-21
该存储库旨在成为一个交互式学习资源。每个问题都鼓励读者在查看答案之前思考 JavaScript 的行为。这种设计鼓励主动学习并有助于巩固 JavaScript 概念。
该存储库可用于:
来源:README.md11-18 nl-NL/README.md7-12 id-ID/README.md5-10 zh-TW/README_zh-TW.md6-11
该存储库欢迎社区贡献,特别是以下方面:
贡献者应遵循现有问题格式,并确保翻译准确地传达技术内容和每个解释的细微差别。