Một tài liệu tham khảo JavaScript hiện đại có thể tìm kiếm và in được — cú pháp, mảng, chuỗi, đối tượng, async/await, DOM và các tính năng ES2022+. Miễn phí.

Variables & types

10
let x = 1;
Block-scoped, reassignable variable
const PI = 3.14;
Block-scoped constant binding
typeof value
Returns the type as a string
Number('42')
Convert a string to a number
String(42)
Convert a value to a string
parseInt('42px', 10)
Parse a leading integer (base 10)
Boolean(0)
Coerce a value to true/false
value ?? 'default'
Nullish coalescing (null/undefined only)
a?.b?.c
Optional chaining, short-circuits on null
Array.isArray(x)
Check whether a value is an array

Functions

9
function add(a, b) { return a + b; }
Named function declaration
const add = (a, b) => a + b;
Arrow function with implicit return
const f = (a = 1) => a;
Default parameter value
function f(...args) {}
Rest parameters collect into an array
f(...arr)
Spread an array into arguments
const { a, b } = obj;
Object destructuring
const [x, y] = arr;
Array destructuring
(function(){})()
Immediately-invoked function (IIFE)
fn.bind(this)
Bind a fixed this context

Strings

10
`Hello ${name}`
Template literal interpolation
str.length
Number of characters
str.includes('a')
Check if a substring exists
str.slice(0, 3)
Extract part of a string
str.replace(/a/g, 'b')
Replace matches (regex)
str.split(',')
Split into an array
str.trim()
Remove surrounding whitespace
str.toUpperCase()
Convert to upper case
str.padStart(3, '0')
Pad the start to a length
str.at(-1)
Character at index (supports negatives)

Arrays

11
arr.map(x => x * 2)
Transform each element
arr.filter(x => x > 0)
Keep matching elements
arr.reduce((a, b) => a + b, 0)
Reduce to a single value
arr.find(x => x.id === 1)
First matching element
arr.some(x => x > 0)
True if any element matches
arr.every(x => x > 0)
True if all elements match
arr.includes(3)
Check for a value
arr.sort((a, b) => a - b)
Numeric ascending sort
[...new Set(arr)]
Remove duplicate values
arr.flat(Infinity)
Fully flatten nested arrays
arr.at(-1)
Last element (negative index)

Objects

9
Object.keys(obj)
Array of own enumerable keys
Object.values(obj)
Array of own values
Object.entries(obj)
Array of [key, value] pairs
{ ...a, ...b }
Merge objects (spread)
Object.assign({}, a, b)
Copy/merge into a target
Object.freeze(obj)
Make an object immutable
{ [key]: value }
Computed property name
obj.hasOwnProperty('x')
Check for an own property
structuredClone(obj)
Deep clone an object

Async & promises

9
async function f() {}
Declare an async function
await fetch(url)
Pause until a promise resolves
Promise.all([p1, p2])
Wait for all to resolve
Promise.allSettled([p1, p2])
Wait for all to settle
Promise.race([p1, p2])
Resolve with the first to settle
new Promise((res, rej) => {})
Create a promise manually
try { await f(); } catch (e) {}
Handle async errors
setTimeout(fn, 1000)
Run after a delay (ms)
queueMicrotask(fn)
Schedule a microtask

Control flow

9
if (a) {} else if (b) {} else {}
Conditional branches
a ? b : c
Ternary expression
switch (x) { case 1: break; }
Multi-way branch
for (const x of arr) {}
Iterate values (iterables)
for (const k in obj) {}
Iterate object keys
while (cond) {}
Loop while a condition holds
arr.forEach((x, i) => {})
Run a callback per element
break / continue
Exit or skip a loop iteration
label: for (...) { break label; }
Break out of nested loops

DOM & events

10
document.querySelector('.x')
First matching element
document.querySelectorAll('.x')
All matching elements (NodeList)
el.addEventListener('click', fn)
Attach an event listener
el.classList.toggle('active')
Toggle a CSS class
el.dataset.id
Read a data-id attribute
el.textContent = 'hi'
Set text safely (no HTML)
el.setAttribute('aria-hidden', true)
Set an attribute
e.preventDefault()
Cancel the default action
el.closest('.parent')
Nearest matching ancestor
document.createElement('div')
Create a new element

Classes & modules

9
class A extends B {}
Class with inheritance
constructor() { super(); }
Initialize and call the parent
#private = 1;
Private class field
static create() {}
Static method on the class
get value() {}
Getter accessor
export default fn;
Default module export
export { a, b };
Named module exports
import x, { y } from './m.js'
Default + named imports
const m = await import('./m.js')
Dynamic import

Không có mục nào khớp với “:q”.


Giới thiệu về Bảng tra cứu JavaScript

Trang tổng hợp JavaScript này là một tài liệu tham khảo một trang, có thể tìm kiếm, về ngôn ngữ hiện đại: biến và kiểu dữ liệu, hàm, chuỗi, mảng, đối tượng, async và promise, luồng điều khiển, DOM và sự kiện, cùng lớp và module. Mỗi mục ghép một đoạn mã thực tế với một giải thích ngắn gọn về chức năng của nó.

Nó được viết dựa trên JavaScript mà mọi người thực sự dùng ngày nay — let và const, arrow function, destructuring, spread, optional chaining, template literal, async/await và ES module — nên nó cũng đóng vai trò như một tài liệu ôn tập nhanh khi bạn quay lại từ một ngôn ngữ khác.

Toàn bộ trang tải phía client và miễn phí. Lọc trực tiếp bằng ô tìm kiếm, nhảy giữa các phần từ mục lục dính (sticky), nhấp vào bất kỳ đoạn mã nào để sao chép, và in trang để có một tài liệu tham khảo JavaScript ngay trên bàn làm việc.

Cách sử dụng Bảng tra cứu JavaScript

  1. Mở trang tổng hợp và lướt qua danh sách phần — từ Variables & types đến DOM & events và Classes & modules.
  2. Gõ vào ô tìm kiếm để lọc từng dòng trực tiếp; bộ đếm kết quả khớp cho biết có bao nhiêu đoạn mã phù hợp.
  3. Dùng mục lục dính (sticky) để nhảy thẳng đến một phần như Async & promises.
  4. Nhấp vào một đoạn mã, hoặc biểu tượng sao chép của nó, để sao chép mã vào clipboard.
  5. Nhấp Print để có một bản in sạch, thân thiện với giấy in của toàn bộ tài liệu tham khảo.

Câu hỏi thường gặp

Chín phần: biến và kiểu dữ liệu, hàm, chuỗi, mảng, đối tượng, async và promise, luồng điều khiển, DOM và sự kiện, cùng lớp và module — mỗi phần dưới dạng đoạn mã sẵn sàng sao chép kèm mô tả ngắn.

Có. Các đoạn mã dùng cú pháp hiện tại — let/const, arrow function, destructuring, optional chaining, async/await, class và ES module — phản ánh JavaScript ES2022+ thay vì các mẫu cũ.

Có. Nhấp vào bất kỳ đoạn mã nào, hoặc biểu tượng sao chép xuất hiện khi bạn di chuột qua một dòng, sẽ đưa nó vào clipboard ngay lập tức kèm một xác nhận "Copied!" ngắn gọn.

Có. Nút Print tạo ra một bố cục sạch với thanh tìm kiếm, điều hướng và các nút được loại bỏ, nên các trang in chỉ chứa đoạn mã và mô tả của chúng.

Có. Miễn phí, tải hoàn toàn trong trình duyệt của bạn, và không yêu cầu tài khoản.


Tìm kiếm phổ biến
javascript cheat sheet js cheat sheet javascript array methods javascript string methods javascript promises and async await javascript object methods js dom methods javascript syntax reference
Cần trợ giúp?
Gặp sự cố với công cụ này? Hãy cho đội ngũ của chúng tôi biết.
Báo cáo sự cố

Thêm công cụ miễn phí này vào trang web của riêng bạn — sao chép và dán mã bên dưới.