1. Trong JavaScript, thuộc tính `length` của một chuỗi trả về cái gì?
A. Số byte mà chuỗi chiếm trong bộ nhớ
B. Số từ trong chuỗi
C. Số ký tự trong chuỗi
D. Kiểu dữ liệu của chuỗi
2. Trong JavaScript, `this` đề cập đến cái gì?
A. Hàm hiện tại đang thực thi
B. Đối tượng toàn cục
C. Đối tượng mà hàm là một phương thức của nó
D. Kiểu dữ liệu của biến
3. Trong JavaScript, kiểu dữ liệu nào sau đây không phải là kiểu dữ liệu nguyên thủy?
A. String
B. Number
C. Boolean
D. Object
4. Trong JavaScript, sự khác biệt giữa `localStorage` và `sessionStorage` là gì?
A. `localStorage` lưu trữ dữ liệu trong một phiên duy nhất, trong khi `sessionStorage` lưu trữ dữ liệu vĩnh viễn
B. `sessionStorage` lưu trữ dữ liệu trong một phiên duy nhất, trong khi `localStorage` lưu trữ dữ liệu vĩnh viễn cho đến khi bị xóa
C. `localStorage` chỉ có thể lưu trữ chuỗi, trong khi `sessionStorage` có thể lưu trữ mọi kiểu dữ liệu
D. `localStorage` và `sessionStorage` hoàn toàn giống nhau
5. Trong JavaScript, arrow function khác gì so với function thông thường?
A. Arrow function không thể được sử dụng để tạo đối tượng
B. Arrow function không có `this` riêng của nó
C. Arrow function không có prototype
D. Tất cả các đáp án trên
6. Đoạn mã sau sẽ in ra gì? `console.log(1 + ‘1’);`
7. Trong JavaScript, event bubbling là gì?
A. Một lỗi trong trình duyệt
B. Một cách để ngăn chặn các sự kiện lan truyền
C. Quá trình mà một sự kiện lan truyền từ phần tử đích đến các phần tử cha của nó trong DOM
D. Một kiểu sự kiện đặc biệt
8. Từ khóa nào sau đây được sử dụng để khai báo một biến không thể gán lại giá trị sau khi khởi tạo trong JavaScript?
A. var
B. let
C. const
D. static
9. Trong JavaScript, IIFE là gì?
A. Một biến toàn cục
B. Một hàm được gọi hai lần
C. Một hàm được gọi ngay lập tức sau khi được định nghĩa
D. Một kiểu dữ liệu mới
10. Đoạn mã sau sẽ trả về kết quả gì? `console.log(2 == ‘2’);`
A. true
B. false
C. Error
D. NaN
11. Trong JavaScript, đối tượng `Math` cung cấp phương thức nào để làm tròn một số đến số nguyên gần nhất?
A. Math.ceil()
B. Math.floor()
C. Math.round()
D. Math.trunc()
12. Đoạn mã JavaScript sau sẽ trả về kết quả gì: `console.log(typeof null);`?
A. ‘null’
B. ‘undefined’
C. ‘object’
D. ‘number’
13. Hàm nào sau đây được sử dụng để hiển thị một hộp thoại cảnh báo với một thông báo trong JavaScript?
A. prompt()
B. confirm()
C. alert()
D. console.log()
14. Toán tử nào sau đây được sử dụng để so sánh bằng giá trị và kiểu dữ liệu trong JavaScript?
15. Phương thức `filter()` trong JavaScript dùng để làm gì?
A. Sắp xếp các phần tử của một mảng
B. Tìm kiếm một phần tử trong một mảng
C. Tạo một mảng mới chứa tất cả các phần tử của mảng ban đầu thỏa mãn một điều kiện nhất định
D. Thay đổi giá trị của các phần tử trong mảng ban đầu
16. Trong JavaScript, closure là gì?
A. Một biến toàn cục
B. Một hàm bên trong một hàm khác có thể truy cập các biến của hàm bên ngoài
C. Một đối tượng không có thuộc tính
D. Một kiểu dữ liệu nguyên thủy
17. Trong JavaScript, hoisting là gì?
A. Một lỗi trong trình duyệt
B. Một kỹ thuật tối ưu hóa mã
C. Cơ chế mà các khai báo biến và hàm được di chuyển lên đầu phạm vi của chúng trước khi thực thi mã
D. Một kiểu vòng lặp mới
18. Phương thức nào sau đây được sử dụng để chuyển đổi một đối tượng JavaScript thành một chuỗi JSON?
A. JSON.parse()
B. JSON.stringify()
C. JSON.convert()
D. JSON.objectify()
19. Trong JavaScript, phương thức nào sau đây được sử dụng để thêm một phần tử vào cuối mảng?
A. shift()
B. unshift()
C. push()
D. pop()
20. Trong JavaScript, `NaN` là gì?
A. Một lỗi cú pháp
B. Một kiểu dữ liệu
C. Một giá trị đại diện cho ‘Không phải là một số’
D. Một hàm toán học
21. Phương thức nào sau đây được sử dụng để tìm kiếm một phần tử trong mảng và trả về chỉ số của phần tử đó trong JavaScript?
A. indexOf()
B. search()
C. find()
D. includes()
22. Phương thức `map()` trong JavaScript được sử dụng để làm gì?
A. Lọc các phần tử của một mảng
B. Sắp xếp các phần tử của một mảng
C. Tạo một mảng mới bằng cách áp dụng một hàm cho mỗi phần tử của mảng ban đầu
D. Tìm kiếm một phần tử trong một mảng
23. Trong JavaScript, DOM là viết tắt của?
A. Document Object Model
B. Data Object Model
C. Direct Object Manipulation
D. Dynamic Object Management
24. Hàm nào sau đây được sử dụng để chuyển đổi một chuỗi thành một số nguyên trong JavaScript?
A. parseFloat()
B. isNaN()
C. parseInt()
D. isInteger()
25. Trong JavaScript, hàm `setTimeout` được sử dụng để làm gì?
A. Thực thi một hàm ngay lập tức
B. Thực thi một hàm sau một khoảng thời gian nhất định
C. Dừng thực thi mã JavaScript
D. Lặp lại việc thực thi một hàm liên tục
26. Sự khác biệt chính giữa `null` và `undefined` trong JavaScript là gì?
A. `null` là một kiểu dữ liệu, `undefined` không phải là một kiểu dữ liệu
B. `undefined` là một giá trị đã được gán rõ ràng, `null` là giá trị mặc định
C. `null` là một giá trị gán, biểu thị việc không có giá trị, trong khi `undefined` biểu thị một biến chưa được gán giá trị
D. `null` và `undefined` hoàn toàn giống nhau
27. Trong JavaScript, phương thức nào sau đây được sử dụng để loại bỏ khoảng trắng ở đầu và cuối một chuỗi?
A. replace()
B. substring()
C. trim()
D. charAt()
28. Trong JavaScript, vòng lặp nào sau đây được sử dụng để lặp qua các thuộc tính của một đối tượng?
A. for
B. while
C. for…in
D. do…while
29. Phương thức nào sau đây được sử dụng để dừng việc thực thi một vòng lặp trong JavaScript?
A. return
B. exit
C. break
D. stop
30. Trong JavaScript, promise là gì?
A. Một kiểu dữ liệu mới
B. Một đối tượng đại diện cho kết quả cuối cùng của một hoạt động bất đồng bộ
C. Một hàm được thực thi ngay lập tức
D. Một biến toàn cục
31. Trong JavaScript, kiểu dữ liệu nào sau đây không phải là kiểu dữ liệu nguyên thủy?
A. String
B. Boolean
C. Object
D. Number
32. Sự khác biệt chính giữa `null` và `undefined` trong JavaScript là gì?
A. `null` là một giá trị được gán rõ ràng cho một biến, trong khi `undefined` có nghĩa là biến chưa được gán giá trị
B. `undefined` là một giá trị được gán rõ ràng cho một biến, trong khi `null` có nghĩa là biến chưa được gán giá trị
C. `null` là một kiểu dữ liệu, trong khi `undefined` không phải là một kiểu dữ liệu
D. Không có sự khác biệt giữa `null` và `undefined`
33. Trong JavaScript, closure là gì?
A. Một hàm bên trong một hàm khác có thể truy cập các biến của hàm bên ngoài
B. Một đối tượng đặc biệt dùng để lưu trữ dữ liệu
C. Một kiểu dữ liệu nguyên thủy
D. Một cách để tạo các biến toàn cục
34. Phương thức nào sau đây được sử dụng để loại bỏ phần tử cuối cùng khỏi một mảng trong JavaScript?
A. shift()
B. unshift()
C. push()
D. pop()
35. Trong JavaScript, promises được sử dụng để làm gì?
A. Xử lý các hoạt động bất đồng bộ
B. Tạo các biến toàn cục
C. Định nghĩa các lớp
D. Quản lý bộ nhớ
36. Trong JavaScript, strict mode là gì?
A. Một cách để viết mã JavaScript an toàn hơn bằng cách áp đặt các quy tắc nghiêm ngặt hơn
B. Một kỹ thuật để tối ưu hóa hiệu suất mã
C. Một cách để tạo các biến toàn cục
D. Một kiểu dữ liệu mới trong JavaScript
37. Hàm nào sau đây được sử dụng để chuyển đổi một chuỗi JSON thành một đối tượng JavaScript?
A. JSON.parse()
B. JSON.stringify()
C. stringToObject()
D. toObject()
38. Phương thức nào sau đây được sử dụng để tìm kiếm một phần tử trong một mảng thỏa mãn một điều kiện nhất định?
A. map()
B. filter()
C. find()
D. forEach()
39. Trong JavaScript, DOM là viết tắt của?
A. Document Object Model
B. Data Object Model
C. Dynamic Object Management
D. Distributed Object Mapping
40. Phương thức nào sau đây được sử dụng để chuyển đổi một đối tượng JavaScript thành một chuỗi JSON?
A. JSON.parse()
B. JSON.stringify()
C. objectToString()
D. toString()
41. Trong JavaScript, IIFE là viết tắt của?
A. Immediately Invoked Function Expression
B. Internally Initialized Function Element
C. Inferred Instance Function Execution
D. Iterative Interface Function Entity
42. Hàm nào sau đây được sử dụng để thiết lập một bộ hẹn giờ trong JavaScript?
A. setInterval()
B. setTimeout()
C. clearInterval()
D. clearTimeout()
43. Trong JavaScript, scope là gì?
A. Phạm vi truy cập của các biến và hàm
B. Một kỹ thuật để tối ưu hóa hiệu suất mã
C. Một cách để tạo các biến toàn cục
D. Một kiểu dữ liệu mới trong JavaScript
44. Trong JavaScript, phương thức `map()` được sử dụng để làm gì?
A. Tạo một mảng mới với kết quả của việc gọi một hàm cung cấp trên mọi phần tử trong mảng gọi
B. Lọc các phần tử của một mảng dựa trên một điều kiện nhất định
C. Tìm kiếm một phần tử trong một mảng
D. Sắp xếp các phần tử của một mảng
45. Phương thức nào sau đây được sử dụng để thêm một phần tử vào cuối một mảng trong JavaScript?
A. shift()
B. unshift()
C. push()
D. pop()
46. Hàm nào sau đây được sử dụng để chuyển đổi một chuỗi thành một số nguyên trong JavaScript?
A. String()
B. parseFloat()
C. parseInt()
D. toNumber()
47. Trong JavaScript, `this` đề cập đến cái gì?
A. Đối tượng toàn cục
B. Đối tượng mà hàm là một phương thức của nó
C. Hàm hiện tại
D. Nguyên mẫu của đối tượng
48. Trong JavaScript, event bubbling là gì?
A. Một cơ chế mà các sự kiện lan truyền lên cây DOM từ phần tử mục tiêu đến phần tử gốc
B. Một kỹ thuật để ngăn chặn các sự kiện mặc định của trình duyệt
C. Một cách để tạo các sự kiện tùy chỉnh
D. Một kiểu sự kiện mới trong JavaScript
49. Phương thức nào sau đây được sử dụng để lặp qua các phần tử của một mảng và thực hiện một hàm cho mỗi phần tử?
A. map()
B. filter()
C. find()
D. forEach()
50. Phương thức nào sau đây được sử dụng để sao chép một mảng trong JavaScript?
A. assign()
B. slice()
C. concat()
D. copy()
51. Trong JavaScript, hoisting là gì?
A. Cơ chế mà trình thông dịch di chuyển các khai báo biến và hàm lên đầu phạm vi của chúng trước khi thực thi mã
B. Một kỹ thuật để tối ưu hóa hiệu suất mã
C. Một cách để tạo các biến toàn cục
D. Một kiểu dữ liệu mới trong JavaScript
52. Vòng lặp nào sau đây được đảm bảo thực thi ít nhất một lần trong JavaScript?
A. for
B. while
C. do…while
D. for…in
53. Trong JavaScript, `undefined` có nghĩa là gì?
A. Biến đã được khai báo nhưng chưa được gán giá trị
B. Biến chưa được khai báo
C. Giá trị của biến là null
D. Kiểu dữ liệu của biến là không xác định
54. Toán tử nào sau đây được sử dụng để so sánh bằng cả giá trị và kiểu dữ liệu trong JavaScript?
55. Hàm nào sau đây được sử dụng để xóa một bộ hẹn giờ đã được thiết lập bằng `setTimeout()` trong JavaScript?
A. setInterval()
B. setTimeout()
C. clearInterval()
D. clearTimeout()
56. Phương thức nào sau đây được sử dụng để kết hợp hai hoặc nhiều mảng trong JavaScript?
A. join()
B. merge()
C. concat()
D. combine()
57. Toán tử `typeof` trong JavaScript trả về gì?
A. Kiểu dữ liệu của một biến
B. Giá trị của một biến
C. Kích thước của một biến trong bộ nhớ
D. Địa chỉ bộ nhớ của một biến
58. Trong Javascript, `var`, `let` và `const` khác nhau như thế nào về phạm vi (scope)?
A. `var` có phạm vi hàm hoặc toàn cục, `let` và `const` có phạm vi khối
B. `let` có phạm vi hàm hoặc toàn cục, `var` và `const` có phạm vi khối
C. `const` có phạm vi hàm hoặc toàn cục, `var` và `let` có phạm vi khối
D. Không có sự khác biệt về phạm vi giữa `var`, `let` và `const`
59. Hàm nào sau đây được sử dụng để hiển thị một hộp thoại cảnh báo trong trình duyệt?
A. console.log()
B. alert()
C. prompt()
D. confirm()
60. Trong JavaScript, `NaN` là viết tắt của?
A. Not a Null
B. Not a Number
C. Null and Number
D. No Argument Needed
61. Sự khác biệt giữa ‘let’, ‘const’ và ‘var’ trong JavaScript là gì?
A. ‘var’ có phạm vi hàm hoặc toàn cục, ‘let’ và ‘const’ có phạm vi block; ‘const’ khai báo biến không thể gán lại, ‘let’ và ‘var’ thì có thể
B. ‘let’ có phạm vi hàm hoặc toàn cục, ‘var’ và ‘const’ có phạm vi block; ‘const’ khai báo biến không thể gán lại, ‘let’ và ‘var’ thì có thể
C. ‘const’ có phạm vi hàm hoặc toàn cục, ‘let’ và ‘var’ có phạm vi block; ‘let’ khai báo biến không thể gán lại, ‘const’ và ‘var’ thì có thể
D. Không có sự khác biệt
62. Đoạn mã JavaScript nào sau đây sẽ tạo ra một hộp thoại thông báo với nội dung ‘Hello, World!’?
A. console.log(‘Hello, World!’);
B. document.write(‘Hello, World!’);
C. alert(‘Hello, World!’);
D. prompt(‘Hello, World!’);
63. Trong JavaScript, rest parameter là gì?
A. Một tham số mặc định cho hàm
B. Một cách để thu thập tất cả các tham số còn lại vào một mảng
C. Một tham số không bắt buộc
D. Một tham số chỉ đọc
64. Trong JavaScript, spread operator được sử dụng để làm gì?
A. Để tạo một bản sao sâu của một đối tượng
B. Để hợp nhất hai đối tượng thành một
C. Để mở rộng một iterable (như một mảng hoặc chuỗi) thành các phần tử riêng lẻ
D. Để giới hạn số lượng tham số có thể được truyền vào một hàm
65. Phương thức nào sau đây được sử dụng để loại bỏ phần tử cuối cùng khỏi một mảng trong JavaScript?
A. shift()
B. pop()
C. push()
D. unshift()
66. Hàm nào sau đây được sử dụng để chuyển đổi một chuỗi thành một số nguyên trong JavaScript?
A. String()
B. parseFloat()
C. parseInt()
D. Number()
67. Phương thức nào của đối tượng Array trong JavaScript được sử dụng để thêm một hoặc nhiều phần tử vào cuối mảng và trả về độ dài mới của mảng?
A. shift()
B. pop()
C. push()
D. unshift()
68. Trong JavaScript, closure là gì?
A. Một kiểu dữ liệu mới
B. Một hàm bên trong một hàm khác, có thể truy cập các biến của hàm bên ngoài sau khi hàm bên ngoài đã thực thi xong
C. Một cách để tạo đối tượng
D. Một vòng lặp đặc biệt
69. Trong JavaScript, template literals là gì?
A. Một cách để tạo các đối tượng
B. Một cách để viết các chuỗi đa dòng và chèn các biểu thức
C. Một cách để tạo các hàm ẩn danh
D. Một cách để định nghĩa các kiểu dữ liệu mới
70. Phương thức nào sau đây được sử dụng để lặp qua các phần tử của một mảng trong JavaScript?
A. forEach()
B. map()
C. filter()
D. reduce()
71. Trong JavaScript, event bubbling là gì?
A. Một lỗi trong trình duyệt
B. Một cách để ngăn chặn sự kiện mặc định của một phần tử
C. Quá trình mà một sự kiện được kích hoạt trên một phần tử con, sau đó lan truyền lên các phần tử cha của nó
D. Một kỹ thuật để tối ưu hóa hiệu suất JavaScript
72. Phương thức nào sau đây được sử dụng để chuyển đổi một đối tượng JavaScript thành một chuỗi JSON?
A. JSON.parse()
B. JSON.stringify()
C. JSON.convert()
D. JSON.format()
73. Trong JavaScript, toán tử ‘===’ dùng để làm gì?
A. Gán giá trị
B. So sánh giá trị và kiểu dữ liệu
C. So sánh giá trị
D. So sánh tham chiếu
74. Hàm nào sau đây được sử dụng để tìm kiếm một phần tử trong một mảng dựa trên một điều kiện cho trước?
A. map()
B. filter()
C. reduce()
D. find()
75. Hàm nào sau đây được sử dụng để tạo một yêu cầu HTTP trong JavaScript?
A. XMLHttpRequest()
B. HTTPrequest()
C. AjaxRequest()
D. FetchRequest()
76. Đâu là cách chính xác để viết một chú thích một dòng trong JavaScript?
A. /* Đây là chú thích */
B. // Đây là chú thích
C. # Đây là chú thích
D. — Đây là chú thích
77. Sự khác biệt chính giữa ‘null’ và ‘undefined’ trong JavaScript là gì?
A. ‘null’ là một giá trị được gán, trong khi ‘undefined’ có nghĩa là một biến đã được khai báo nhưng chưa được gán giá trị
B. ‘undefined’ là một giá trị được gán, trong khi ‘null’ có nghĩa là một biến đã được khai báo nhưng chưa được gán giá trị
C. Không có sự khác biệt, chúng có thể được sử dụng thay thế cho nhau
D. ‘null’ là một kiểu dữ liệu, trong khi ‘undefined’ không phải
78. Trong JavaScript, hàm ‘setTimeout’ được sử dụng để làm gì?
A. Thực hiện một hàm sau một khoảng thời gian xác định
B. Tạo một vòng lặp vô hạn
C. Đo thời gian thực thi của một đoạn mã
D. Dừng thực thi mã
79. Trong JavaScript, DOM là viết tắt của cụm từ nào?
A. Document Object Model
B. Data Object Model
C. Dynamic Object Management
D. Digital Output Module
80. Trong JavaScript, từ khóa nào được sử dụng để khai báo một biến cục bộ bên trong một hàm?
A. global
B. const
C. let
D. var
81. Trong JavaScript, ‘use strict’ là gì?
A. Một cách để khai báo biến
B. Một chỉ thị để kích hoạt chế độ nghiêm ngặt, giúp phát hiện lỗi dễ dàng hơn
C. Một hàm tích hợp sẵn
D. Một kiểu dữ liệu
82. Trong JavaScript, ‘this’ đề cập đến cái gì?
A. Hàm hiện tại
B. Biến toàn cục
C. Đối tượng mà hàm là một phương thức của nó
D. Kiểu dữ liệu hiện tại
83. Phương thức nào sau đây được sử dụng để xóa một phần tử khỏi một mảng tại một vị trí cụ thể trong JavaScript?
A. slice()
B. splice()
C. filter()
D. map()
84. Trong JavaScript, prototype là gì?
A. Một kiểu dữ liệu cơ bản
B. Một cơ chế cho phép các đối tượng kế thừa các thuộc tính và phương thức từ một đối tượng khác
C. Một cách để tạo hàm
D. Một vòng lặp
85. Làm thế nào để bạn thêm một lớp CSS vào một phần tử HTML bằng JavaScript?
A. element.style.class = ‘className’;
B. element.className = ‘className’;
C. element.classList.add(‘className’);
D. element.setAttribute(‘class’, ‘className’);
86. Hàm nào sau đây được sử dụng để gỡ lỗi mã JavaScript trong trình duyệt?
A. console.log()
B. alert()
C. prompt()
D. debugger
87. Trong JavaScript, hàm ‘map()’ được sử dụng để làm gì?
A. Lọc các phần tử của một mảng
B. Biến đổi mỗi phần tử của một mảng và tạo ra một mảng mới
C. Tìm kiếm một phần tử trong một mảng
D. Sắp xếp các phần tử của một mảng
88. Trong JavaScript, làm thế nào để bạn kiểm tra xem một biến có phải là một mảng hay không?
A. typeof myArray === ‘array’
B. myArray instanceof Array
C. myArray.isArray()
D. Array.isArray(myArray)
89. JSON là viết tắt của cụm từ nào?
A. JavaScript Object Notation
B. Java Source Online Network
C. JavaScript Open Network
D. Java Object Notation
90. Trong JavaScript, promises được sử dụng để làm gì?
A. Tạo các hàm đồng bộ
B. Xử lý các hoạt động bất đồng bộ một cách dễ dàng hơn
C. Tạo các biến toàn cục
D. Định nghĩa các lớp
91. Trong JavaScript, phương thức `map()` được sử dụng để làm gì?
A. Lọc các phần tử của một mảng.
B. Thay đổi các phần tử của một mảng dựa trên một hàm đã cho và trả về một mảng mới.
C. Sắp xếp các phần tử của một mảng.
D. Tìm kiếm một phần tử trong một mảng.
92. Trong JavaScript, phương thức `filter()` được sử dụng để làm gì?
A. Sắp xếp các phần tử của một mảng.
B. Tìm kiếm một phần tử trong một mảng.
C. Tạo một mảng mới chứa các phần tử từ mảng ban đầu thỏa mãn một điều kiện nhất định.
D. Thay đổi các phần tử của một mảng.
93. Kết quả của `2 + ‘2’` trong JavaScript là gì?
94. Trong JavaScript, `callback function` là gì?
A. Một hàm được gọi trước khi một hàm khác bắt đầu thực thi.
B. Một hàm được truyền làm đối số cho một hàm khác và được thực thi sau khi hàm đó hoàn thành.
C. Một hàm được gọi tự động khi một biến thay đổi giá trị.
D. Một hàm được sử dụng để tạo các đối tượng.
95. Trong JavaScript, sự kiện `onClick` thường được sử dụng để làm gì?
A. Xử lý sự kiện khi một trang web được tải.
B. Xử lý sự kiện khi một phần tử HTML được nhấp vào.
C. Xử lý sự kiện khi chuột di chuyển qua một phần tử HTML.
D. Xử lý sự kiện khi một biểu mẫu HTML được gửi.
96. Trong JavaScript, hàm `setTimeout()` được sử dụng để làm gì?
A. Thực thi một hàm ngay lập tức.
B. Thực thi một hàm sau một khoảng thời gian chờ nhất định.
C. Lặp lại việc thực thi một hàm liên tục.
D. Dừng việc thực thi một hàm.
97. Trong JavaScript, mục đích của từ khóa `this` là gì?
A. Tham chiếu đến hàm hiện tại.
B. Tham chiếu đến đối tượng mà hàm là một phương thức của nó.
C. Tham chiếu đến biến toàn cục.
D. Tham chiếu đến đối tượng cha.
98. Trong JavaScript, `undefined` và `null` khác nhau như thế nào?
A. `undefined` có nghĩa là một biến đã được khai báo nhưng chưa được gán giá trị, trong khi `null` là một giá trị gán biểu thị sự vắng mặt của một giá trị.
B. `null` có nghĩa là một biến đã được khai báo nhưng chưa được gán giá trị, trong khi `undefined` là một giá trị gán biểu thị sự vắng mặt của một giá trị.
C. Không có sự khác biệt giữa `undefined` và `null`.
D. Cả hai đều là lỗi trong JavaScript.
99. Sự khác biệt chính giữa `let`, `const` và `var` trong JavaScript là gì?
A. `var` có phạm vi hàm hoặc toàn cục, `let` và `const` có phạm vi khối, và `const` khai báo các biến không thể gán lại.
B. `let` có phạm vi hàm hoặc toàn cục, `var` và `const` có phạm vi khối, và `const` khai báo các biến có thể gán lại.
C. `const` có phạm vi hàm hoặc toàn cục, `let` và `var` có phạm vi khối, và `var` khai báo các biến không thể gán lại.
D. Không có sự khác biệt giữa `let`, `const` và `var`.
100. Trong JavaScript, closure là gì?
A. Một hàm không có tham số.
B. Một hàm bên trong một hàm khác có thể truy cập các biến của hàm bên ngoài, ngay cả sau khi hàm bên ngoài đã thực thi xong.
C. Một đối tượng không có thuộc tính.
D. Một biến toàn cục.
101. Phương thức nào sau đây được sử dụng để loại bỏ phần tử cuối cùng khỏi một mảng trong JavaScript?
A. shift()
B. pop()
C. push()
D. unshift()
102. `Hoisting` trong JavaScript là gì?
A. Một kỹ thuật để tối ưu hóa hiệu suất của mã JavaScript.
B. Một cơ chế mà trình thông dịch JavaScript di chuyển các khai báo biến và hàm lên đầu phạm vi của chúng trước khi thực thi mã.
C. Một cách để tạo các biến toàn cục.
D. Một phương pháp để ẩn mã JavaScript khỏi người dùng.
103. Điều gì xảy ra khi bạn sử dụng toán tử `+` để cộng một chuỗi với một số trong JavaScript?
A. JavaScript sẽ báo lỗi.
B. Số sẽ được chuyển đổi thành chuỗi và sau đó được nối với chuỗi ban đầu.
C. Chuỗi sẽ được chuyển đổi thành số và sau đó được cộng với số ban đầu.
D. Kết quả sẽ là NaN (Not a Number).
104. Trong JavaScript, kiểu dữ liệu nào sau đây không phải là kiểu dữ liệu nguyên thủy?
A. Boolean
B. Number
C. Object
D. String
105. Trong JavaScript, `JSON.stringify()` được sử dụng để làm gì?
A. Chuyển đổi một chuỗi JSON thành một đối tượng JavaScript.
B. Chuyển đổi một đối tượng JavaScript thành một chuỗi JSON.
C. Kiểm tra xem một chuỗi có phải là một chuỗi JSON hợp lệ hay không.
D. Định dạng một chuỗi JSON.
106. Phương thức nào sau đây được dùng để tìm kiếm một phần tử trong mảng dựa trên điều kiện cho trước và trả về phần tử đầu tiên thỏa mãn điều kiện?
A. filter()
B. map()
C. find()
D. forEach()
107. Giá trị của `this` trong một arrow function được xác định như thế nào?
A. Dựa trên đối tượng gọi hàm.
B. Dựa trên ngữ cảnh nơi arrow function được định nghĩa.
C. Luôn luôn là đối tượng window (hoặc undefined trong strict mode).
D. Không thể xác định được.
108. Trong JavaScript, DOM là viết tắt của cụm từ nào?
A. Document Object Model
B. Data Object Management
C. Digital Output Module
D. Direct Object Manipulation
109. Trong JavaScript, `async/await` được sử dụng để làm gì?
A. Để tạo các hàm đồng bộ.
B. Để làm cho mã bất đồng bộ trông và hoạt động giống như mã đồng bộ.
C. Để tối ưu hóa hiệu suất của mã.
D. Để khai báo các biến toàn cục.
110. Trong JavaScript, `try…catch` được sử dụng để làm gì?
A. Tối ưu hóa hiệu suất mã.
B. Xử lý các ngoại lệ (errors) có thể xảy ra trong quá trình thực thi mã.
C. Khai báo biến cục bộ.
D. Tạo vòng lặp.
111. Arrow function (hàm mũi tên) trong Javascript có đặc điểm gì khác biệt so với function thông thường?
A. Arrow function không có `this` riêng và không thể sử dụng `arguments` object.
B. Arrow function luôn luôn trả về `undefined`.
C. Arrow function không thể sử dụng trong các class.
D. Arrow function chạy chậm hơn function thông thường.
112. Trong JavaScript, khái niệm `Promise` được sử dụng để làm gì?
A. Để quản lý các biến toàn cục.
B. Để xử lý các hoạt động bất đồng bộ một cách dễ dàng hơn.
C. Để tạo các hàm đệ quy.
D. Để tối ưu hóa hiệu suất của mã.
113. Trong JavaScript, cú pháp `…` (spread operator) được sử dụng để làm gì?
A. Để tạo một bản sao sâu của một đối tượng.
B. Để trải rộng các phần tử của một mảng hoặc các thuộc tính của một đối tượng vào một mảng hoặc đối tượng khác.
C. Để kết hợp hai chuỗi lại với nhau.
D. Để tạo một hàm vô danh.
114. Trong JavaScript, `localStorage` và `sessionStorage` khác nhau như thế nào?
A. `localStorage` lưu trữ dữ liệu trong một phiên duy nhất, trong khi `sessionStorage` lưu trữ dữ liệu vĩnh viễn.
B. `sessionStorage` lưu trữ dữ liệu trong một phiên duy nhất, trong khi `localStorage` lưu trữ dữ liệu vĩnh viễn cho đến khi bị xóa thủ công.
C. Không có sự khác biệt giữa `localStorage` và `sessionStorage`.
D. `localStorage` chỉ có thể lưu trữ chuỗi, trong khi `sessionStorage` có thể lưu trữ bất kỳ kiểu dữ liệu nào.
115. Trong JavaScript, phương thức nào sau đây được sử dụng để thêm một phần tử vào cuối một mảng?
A. unshift()
B. shift()
C. push()
D. pop()
116. Trong JavaScript, vòng lặp `for…in` thường được sử dụng để làm gì?
A. Lặp qua các phần tử của một mảng.
B. Lặp qua các thuộc tính của một đối tượng.
C. Thực hiện một khối lệnh một số lần xác định.
D. Lặp qua các ký tự của một chuỗi.
117. Trong JavaScript, `modules` (mô-đun) được sử dụng để làm gì?
A. Để tạo các biến toàn cục.
B. Để chia mã thành các phần nhỏ hơn, có thể tái sử dụng và dễ quản lý hơn.
C. Để tối ưu hóa hiệu suất của mã.
D. Để ẩn mã JavaScript khỏi người dùng.
118. Hàm `parseInt()` trong JavaScript dùng để làm gì?
A. Chuyển đổi một chuỗi thành một số nguyên.
B. Chuyển đổi một số thành một chuỗi.
C. Kiểm tra xem một giá trị có phải là một số nguyên hay không.
D. Làm tròn một số đến số nguyên gần nhất.
119. Trong JavaScript, sự khác biệt chính giữa `==` và `===` là gì?
A. `==` so sánh giá trị, trong khi `===` so sánh giá trị và kiểu dữ liệu.
B. `==` so sánh kiểu dữ liệu, trong khi `===` so sánh giá trị.
C. `==` là phép gán, trong khi `===` là phép so sánh.
D. Không có sự khác biệt giữa `==` và `===`.
120. Kết quả của biểu thức `typeof null` trong JavaScript là gì?
A. “null”
B. “undefined”
C. “object”
D. “number”
121. Sự khác biệt chính giữa ‘==’ và ‘===’ trong JavaScript là gì?
A. ‘==’ so sánh giá trị và kiểu dữ liệu, trong khi ‘===’ chỉ so sánh giá trị.
B. ‘==’ so sánh giá trị sau khi ép kiểu, trong khi ‘===’ so sánh giá trị và kiểu dữ liệu mà không ép kiểu.
C. ‘==’ là một toán tử gán, trong khi ‘===’ là một toán tử so sánh.
D. Không có sự khác biệt, chúng hoàn toàn giống nhau.
122. Trong JavaScript, ‘undefined’ và ‘null’ khác nhau như thế nào?
A. ‘undefined’ là một giá trị được gán rõ ràng, trong khi ‘null’ biểu thị một biến chưa được khai báo.
B. ‘undefined’ biểu thị một biến chưa được gán giá trị, trong khi ‘null’ là một giá trị gán biểu thị sự vắng mặt của một đối tượng.
C. Chúng hoàn toàn giống nhau và có thể được sử dụng thay thế cho nhau.
D. ‘null’ là một kiểu dữ liệu, trong khi ‘undefined’ không phải là một kiểu dữ liệu.
123. Để ngăn chặn hành vi mặc định của một sự kiện (ví dụ: submit của một form), bạn sử dụng phương thức nào trong JavaScript?
A. preventDefault()
B. stopPropagation()
C. stopImmediatePropagation()
D. return false
124. Phương thức nào sau đây được sử dụng để thêm một phần tử vào cuối một mảng trong JavaScript?
A. unshift()
B. shift()
C. push()
D. pop()
125. Phương thức nào sau đây được sử dụng để loại bỏ phần tử cuối cùng khỏi một mảng trong JavaScript?
A. shift()
B. unshift()
C. pop()
D. push()
126. Kết quả của biểu thức `2 + ‘2’` trong JavaScript là gì?
A. 4
B. 22
C. NaN
D. TypeError
127. Đoạn mã JavaScript sau sẽ in ra giá trị nào: `console.log(1 < 2 < 3);`?
A. true
B. false
C. undefined
D. TypeError
128. Trong JavaScript, hàm `setInterval()` được sử dụng để làm gì?
A. Để thực thi một hàm một lần sau một khoảng thời gian nhất định.
B. Để thực thi một hàm lặp đi lặp lại sau một khoảng thời gian nhất định.
C. Để tạo một vòng lặp vô hạn.
D. Để dừng việc thực thi mã JavaScript.
129. Để tạo một bản sao sâu (deep copy) của một đối tượng trong JavaScript, bạn có thể sử dụng phương pháp nào?
A. Sử dụng toán tử gán (=).
B. Sử dụng phương thức `Object.assign()`.
C. Sử dụng `JSON.parse(JSON.stringify(object))`.
D. Sử dụng phương thức `slice()`.
130. Trong JavaScript, ‘hoisting’ là gì?
A. Một kỹ thuật để tối ưu hóa hiệu suất của mã.
B. Một cơ chế mà trình thông dịch JavaScript di chuyển các khai báo biến và hàm lên đầu phạm vi của chúng trước khi thực thi mã.
C. Một cách để tạo các đối tượng.
D. Một loại vòng lặp đặc biệt.
131. Đoạn mã JavaScript sau sẽ in ra giá trị nào: `console.log(typeof null);`?
A. ‘null’
B. ‘undefined’
C. ‘object’
D. ‘number’
132. Sự khác biệt giữa `call()`, `apply()` và `bind()` trong JavaScript là gì?
A. `call()` và `apply()` gọi hàm ngay lập tức, trong khi `bind()` trả về một hàm mới có ngữ cảnh `this` được ràng buộc.
B. `call()` nhận các tham số dưới dạng một mảng, trong khi `apply()` nhận các tham số riêng lẻ.
C. `apply()` và `bind()` gọi hàm ngay lập tức, trong khi `call()` trả về một hàm mới có ngữ cảnh `this` được ràng buộc.
D. Không có sự khác biệt, chúng hoàn toàn giống nhau.
133. Phương thức nào sau đây được sử dụng để chuyển đổi một chuỗi JSON thành một đối tượng JavaScript?
A. JSON.stringify()
B. JSON.parse()
C. JSON.convert()
D. JSON.objectify()
134. Trong JavaScript, hàm `Array.isArray()` dùng để làm gì?
A. Sắp xếp một mảng.
B. Kiểm tra xem một biến có phải là một mảng hay không.
C. Tạo một mảng mới.
D. Đảo ngược thứ tự các phần tử trong một mảng.
135. Trong JavaScript, từ khóa ‘this’ đề cập đến đối tượng nào trong ngữ cảnh của một phương thức?
A. Đối tượng toàn cục (ví dụ: window trong trình duyệt).
B. Đối tượng chứa phương thức đó.
C. Đối tượng prototype của đối tượng chứa phương thức đó.
D. Không đối tượng nào cả, nó là undefined.
136. Sự khác biệt giữa `let`, `const` và `var` trong JavaScript là gì?
A. `var` có phạm vi khối, trong khi `let` và `const` có phạm vi hàm.
B. `let` và `var` có thể được gán lại, trong khi `const` không thể.
C. `var` có phạm vi hàm, `let` có phạm vi khối và `const` cũng có phạm vi khối nhưng phải được khởi tạo khi khai báo và không thể gán lại.
D. Không có sự khác biệt, chúng có thể được sử dụng thay thế cho nhau.
137. Trong JavaScript, DOM là viết tắt của cụm từ nào?
A. Document Object Model
B. Data Object Model
C. Dynamic Object Management
D. Design Object Method
138. Trong JavaScript, phương thức `filter()` được sử dụng để làm gì?
A. Để sắp xếp các phần tử của một mảng.
B. Để tạo một mảng mới chứa tất cả các phần tử của mảng ban đầu thỏa mãn một điều kiện nhất định.
C. Để tìm phần tử đầu tiên trong một mảng thỏa mãn một điều kiện nhất định.
D. Để áp dụng một hàm cho mỗi phần tử của một mảng.
139. Trong JavaScript, hàm `bind()` được sử dụng để làm gì?
A. Để tạo một đối tượng mới.
B. Để gán một giá trị cho một biến.
C. Để tạo một hàm mới mà khi được gọi, có giá trị `this` được đặt thành giá trị được cung cấp.
D. Để xóa một thuộc tính khỏi một đối tượng.
140. Trong JavaScript, promise là gì?
A. Một đối tượng đại diện cho kết quả cuối cùng của một hoạt động không đồng bộ.
B. Một cách để tạo các đối tượng.
C. Một kỹ thuật để tối ưu hóa hiệu suất của mã.
D. Một loại vòng lặp đặc biệt.
141. Kết quả của biểu thức `NaN === NaN` trong JavaScript là gì?
A. true
B. false
C. undefined
D. TypeError
142. Trong JavaScript, phương thức `map()` được sử dụng để làm gì?
A. Lọc các phần tử của một mảng.
B. Duyệt qua các phần tử của một mảng.
C. Tạo một mảng mới bằng cách áp dụng một hàm cho mỗi phần tử của mảng ban đầu.
D. Sắp xếp các phần tử của một mảng.
143. Trong JavaScript, closure là gì?
A. Một cách để tạo các đối tượng.
B. Một hàm bên trong một hàm khác có quyền truy cập vào các biến của hàm bên ngoài, ngay cả sau khi hàm bên ngoài đã thực thi xong.
C. Một kỹ thuật để tối ưu hóa hiệu suất của mã.
D. Một loại vòng lặp đặc biệt.
144. Trong JavaScript, các template literal được bao quanh bởi ký tự nào?
A. Dấu ngoặc kép (“).
B. Dấu nháy đơn (‘).
C. Dấu backtick (`).
D. Dấu đô la ($).
145. Đoạn mã JavaScript sau sẽ trả về giá trị nào: `[1, 2, 3].reduce((acc, val) => acc + val, 0);`?
146. Hàm `setTimeout(function(){ console.log(‘Hello’); }, 1000);` sẽ thực hiện điều gì?
A. In ra ‘Hello’ ngay lập tức.
B. In ra ‘Hello’ sau 10 giây.
C. In ra ‘Hello’ sau 1 giây.
D. Không in gì cả vì có lỗi cú pháp.
147. Phương thức nào sau đây được sử dụng để tìm chỉ mục của một phần tử trong một mảng trong JavaScript?
A. search()
B. find()
C. indexOf()
D. findIndex()
148. Đoạn mã JavaScript sau sẽ in ra giá trị nào: `console.log(typeof NaN);`?
A. ‘number’
B. ‘NaN’
C. ‘undefined’
D. ‘string’
149. Trong JavaScript, event bubbling là gì?
A. Một kỹ thuật để tạo hiệu ứng động trên các phần tử HTML.
B. Quá trình một sự kiện lan truyền từ phần tử mục tiêu lên các phần tử cha của nó.
C. Một cách để ngăn chặn các sự kiện xảy ra.
D. Một lỗi trong JavaScript khiến các sự kiện được kích hoạt nhiều lần.
150. Để xóa một thuộc tính khỏi một đối tượng trong JavaScript, bạn sử dụng toán tử nào?
A. remove
B. delete
C. unset
D. clear