Nơi bạn có thể đặt code JavaScript trong trang web?
Trả lời:
Đáp án đúng: A
Đoạn mã JavaScript có thể được đặt ở cả phần `` và `` của trang web. Việc đặt trong `` thường được sử dụng cho các đoạn mã cần được tải trước, chẳng hạn như các thư viện hoặc hàm hỗ trợ. Việc đặt trong `` thường được sử dụng cho các đoạn mã liên quan đến nội dung trang và có thể được thực thi sau khi các phần tử HTML đã được tải. Do đó, phương án A là chính xác nhất.
Tổng hợp 500 câu hỏi trắc nghiệm Javascript có đáp án đầy đủ nhằm giúp các bạn dễ dàng ôn tập lại toàn bộ các kiến thức.
50 câu hỏi 60 phút
Câu hỏi liên quan
Lời giải:
Đáp án đúng: A
Câu hỏi này kiểm tra kiến thức về các sự kiện (events) trong JavaScript, đặc biệt là sự kiện xảy ra khi người dùng *kích* (click) vào một phần tử HTML.
* A. onclick: Đây là sự kiện xảy ra khi một phần tử HTML bị *click* (nhấn chuột và thả ra) bởi người dùng. Đây là đáp án chính xác.
* B. onmouseover: Sự kiện này xảy ra khi con trỏ chuột *di chuyển vào* một phần tử HTML, không phải khi kích vào nó.
* C. onchange: Sự kiện này thường được sử dụng cho các phần tử form như input, select, textarea và xảy ra khi giá trị của các phần tử này thay đổi, không phải khi click.
* D. onmouseclick: Đây không phải là một sự kiện chuẩn trong JavaScript. Sự kiện chính xác cho hành động click chuột là `onclick`.
Vì vậy, đáp án đúng là A.
* A. onclick: Đây là sự kiện xảy ra khi một phần tử HTML bị *click* (nhấn chuột và thả ra) bởi người dùng. Đây là đáp án chính xác.
* B. onmouseover: Sự kiện này xảy ra khi con trỏ chuột *di chuyển vào* một phần tử HTML, không phải khi kích vào nó.
* C. onchange: Sự kiện này thường được sử dụng cho các phần tử form như input, select, textarea và xảy ra khi giá trị của các phần tử này thay đổi, không phải khi click.
* D. onmouseclick: Đây không phải là một sự kiện chuẩn trong JavaScript. Sự kiện chính xác cho hành động click chuột là `onclick`.
Vì vậy, đáp án đúng là A.
Lời giải:
Đáp án đúng: C
Đoạn code JavaScript này kiểm tra kiến thức về mảng, tham chiếu, hàm `sort`, `indexOf`, `reverse` và toán tử `&&`, `||`.
1. `const ar = [5, 1, 3, 7, 25]` Khởi tạo mảng `ar`.
2. `const ar1 = ar` Tạo một tham chiếu `ar1` đến mảng `ar`. Điều này có nghĩa là `ar` và `ar1` cùng trỏ đến một vùng nhớ duy nhất. Thay đổi trên `ar` sẽ ảnh hưởng đến `ar1` và ngược lại.
3. `console.log(ar1.sort())` Hàm `sort()` sắp xếp mảng tại chỗ (modify mảng gốc). Vì `ar1` là tham chiếu đến `ar`, cả `ar` và `ar1` đều bị thay đổi. Kết quả là `[1, 3, 5, 7, 25]` sẽ được in ra console.
4. `([5, 25].indexOf(ar[1]) != -1 && console.log(ar.reverse())) || (ar[3] == 25 && console.log(ar))` Đây là một biểu thức phức tạp sử dụng toán tử `&&` và `||`.
* `ar[1]` hiện tại là `3` (vì mảng `ar` đã được sắp xếp ở bước trước).
* `[5, 25].indexOf(ar[1])` tương đương `[5, 25].indexOf(3)`, trả về `-1` (vì `3` không có trong mảng `[5, 25]`).
* `[5, 25].indexOf(ar[1]) != -1` là `false` (vì `-1 != -1` là `false`).
* Do vế trái của `&&` là `false`, `console.log(ar.reverse())` không được thực thi.
* Toán tử `||` sẽ xét vế bên phải: `(ar[3] == 25 && console.log(ar))`
* `ar[3]` hiện tại là `7` (mảng `ar` đã được sắp xếp thành `[1, 3, 5, 7, 25]`).
* `ar[3] == 25` là `false` (vì `7 == 25` là `false`).
* Do vế trái của `&&` là `false`, `console.log(ar)` không được thực thi.
5. `console.log(ar1)` In ra mảng `ar1`. Vì `ar1` là tham chiếu đến `ar` và `ar` đã được sắp xếp, kết quả in ra là `[1, 3, 5, 7, 25]`.
Vậy đáp án đúng là không có trong các phương án đã cho. Output đúng phải là:
[1, 3, 5, 7, 25]
[1, 3, 5, 7, 25]
1. `const ar = [5, 1, 3, 7, 25]` Khởi tạo mảng `ar`.
2. `const ar1 = ar` Tạo một tham chiếu `ar1` đến mảng `ar`. Điều này có nghĩa là `ar` và `ar1` cùng trỏ đến một vùng nhớ duy nhất. Thay đổi trên `ar` sẽ ảnh hưởng đến `ar1` và ngược lại.
3. `console.log(ar1.sort())` Hàm `sort()` sắp xếp mảng tại chỗ (modify mảng gốc). Vì `ar1` là tham chiếu đến `ar`, cả `ar` và `ar1` đều bị thay đổi. Kết quả là `[1, 3, 5, 7, 25]` sẽ được in ra console.
4. `([5, 25].indexOf(ar[1]) != -1 && console.log(ar.reverse())) || (ar[3] == 25 && console.log(ar))` Đây là một biểu thức phức tạp sử dụng toán tử `&&` và `||`.
* `ar[1]` hiện tại là `3` (vì mảng `ar` đã được sắp xếp ở bước trước).
* `[5, 25].indexOf(ar[1])` tương đương `[5, 25].indexOf(3)`, trả về `-1` (vì `3` không có trong mảng `[5, 25]`).
* `[5, 25].indexOf(ar[1]) != -1` là `false` (vì `-1 != -1` là `false`).
* Do vế trái của `&&` là `false`, `console.log(ar.reverse())` không được thực thi.
* Toán tử `||` sẽ xét vế bên phải: `(ar[3] == 25 && console.log(ar))`
* `ar[3]` hiện tại là `7` (mảng `ar` đã được sắp xếp thành `[1, 3, 5, 7, 25]`).
* `ar[3] == 25` là `false` (vì `7 == 25` là `false`).
* Do vế trái của `&&` là `false`, `console.log(ar)` không được thực thi.
5. `console.log(ar1)` In ra mảng `ar1`. Vì `ar1` là tham chiếu đến `ar` và `ar` đã được sắp xếp, kết quả in ra là `[1, 3, 5, 7, 25]`.
Vậy đáp án đúng là không có trong các phương án đã cho. Output đúng phải là:
[1, 3, 5, 7, 25]
[1, 3, 5, 7, 25]
Lời giải:
Đáp án đúng: C
Đoạn code sử dụng arrow function `compare` để so sánh một giá trị với chính nó bằng toán tử `===`. Toán tử `===` so sánh cả giá trị và kiểu dữ liệu. Chúng ta cần xét từng trường hợp:
* `compare(null)`: `null === null` trả về `true`.
* `compare(undefined)`: `undefined === undefined` trả về `true`.
* `compare(NaN)`: `NaN === NaN` trả về `false`. Đây là một đặc tính đặc biệt của `NaN` trong JavaScript.
* `compare([NaN])`: `[NaN] === [NaN]` trả về `false` vì đây là so sánh tham chiếu của hai mảng khác nhau. Tuy nhiên, câu hỏi gốc lại là `compare(NaN)`, tức là truyền `NaN` chứ không phải một mảng chứa `NaN`. Do đó, đây phải là một lỗi đánh máy. Nếu đề bài là `compare([NaN])` thì kết quả phải khác. Tuy nhiên, đối chiếu lại với các đáp án, ta thấy đáp án phù hợp nhất là khi dòng code cuối là `console.log(compare(NaN))`
Vậy, kết quả đúng phải là `true true false true` nếu có sự nhầm lẫn ở dòng code cuối.
* `compare(null)`: `null === null` trả về `true`.
* `compare(undefined)`: `undefined === undefined` trả về `true`.
* `compare(NaN)`: `NaN === NaN` trả về `false`. Đây là một đặc tính đặc biệt của `NaN` trong JavaScript.
* `compare([NaN])`: `[NaN] === [NaN]` trả về `false` vì đây là so sánh tham chiếu của hai mảng khác nhau. Tuy nhiên, câu hỏi gốc lại là `compare(NaN)`, tức là truyền `NaN` chứ không phải một mảng chứa `NaN`. Do đó, đây phải là một lỗi đánh máy. Nếu đề bài là `compare([NaN])` thì kết quả phải khác. Tuy nhiên, đối chiếu lại với các đáp án, ta thấy đáp án phù hợp nhất là khi dòng code cuối là `console.log(compare(NaN))`
Vậy, kết quả đúng phải là `true true false true` nếu có sự nhầm lẫn ở dòng code cuối.
Lời giải:
Đáp án đúng: B
Đoạn code `1..n` gây ra lỗi cú pháp (Syntax error) trong JavaScript. Trong JavaScript, khi bạn muốn gọi một phương thức trên một số trực tiếp (như `1.toString()`), bạn cần phải sử dụng hai dấu chấm (`.`) để trình thông dịch không nhầm lẫn dấu chấm đầu tiên với dấu chấm thập phân. Tuy nhiên, việc sử dụng toán tử range như `1..n` không phải là cú pháp hợp lệ trong JavaScript để tạo một mảng các số từ 1 đến n. Do đó, trình thông dịch sẽ báo lỗi cú pháp.
Lời giải:
Đáp án đúng: A
Đoạn code trên liên quan đến việc sử dụng `Object.freeze()` trong JavaScript. Hàm `Object.freeze()` đóng băng một đối tượng, nghĩa là nó ngăn chặn việc thêm thuộc tính mới, xóa thuộc tính và thay đổi giá trị của các thuộc tính hiện có. Tuy nhiên, nếu một thuộc tính là một đối tượng (nested object), thì chỉ đối tượng bên ngoài (trong trường hợp này là `user`) bị đóng băng. Các thuộc tính của đối tượng lồng nhau (trong trường hợp này là `user.pet`) vẫn có thể thay đổi được.
Trong đoạn code trên, `user` bị đóng băng bằng `Object.freeze(user)`. Tuy nhiên, `user.pet` là một đối tượng, và nó không bị đóng băng. Do đó, việc gán `user.pet.name = 'shiba'` là hợp lệ và không gây ra lỗi. Khi `console.log(user.pet.name)` được gọi, nó sẽ in ra giá trị mới của `user.pet.name`, tức là `'shiba'`.
Vì vậy, đáp án đúng là A. shiba.
Trong đoạn code trên, `user` bị đóng băng bằng `Object.freeze(user)`. Tuy nhiên, `user.pet` là một đối tượng, và nó không bị đóng băng. Do đó, việc gán `user.pet.name = 'shiba'` là hợp lệ và không gây ra lỗi. Khi `console.log(user.pet.name)` được gọi, nó sẽ in ra giá trị mới của `user.pet.name`, tức là `'shiba'`.
Vì vậy, đáp án đúng là A. shiba.
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

FORM.08: Bộ 130+ Biểu Mẫu Thống Kê Trong Doanh Nghiệp
136 tài liệu563 lượt tải

FORM.07: Bộ 125+ Biểu Mẫu Báo Cáo Trong Doanh Nghiệp
125 tài liệu585 lượt tải

FORM.06: Bộ 320+ Biểu Mẫu Hành Chính Thông Dụng
325 tài liệu608 lượt tải

FORM.05: Bộ 330+ Biểu Mẫu Thuế - Kê Khai Thuế Mới Nhất
331 tài liệu1010 lượt tải

FORM.04: Bộ 240+ Biểu Mẫu Chứng Từ Kế Toán Thông Dụng
246 tài liệu802 lượt tải

CEO.22: Bộ Tài Liệu Quy Trình Kiểm Toán, Kiểm Soát Nội Bộ Doanh Nghiệp
138 tài liệu417 lượt tải
ĐĂNG KÝ GÓI THI VIP
- Truy cập hơn 100K đề thi thử và chính thức các năm
- 2M câu hỏi theo các mức độ: Nhận biết – Thông hiểu – Vận dụng
- Học nhanh với 10K Flashcard Tiếng Anh theo bộ sách và chủ đề
- Đầy đủ: Mầm non – Phổ thông (K12) – Đại học – Người đi làm
- Tải toàn bộ tài liệu trên TaiLieu.VN
- Loại bỏ quảng cáo để tăng khả năng tập trung ôn luyện
- Tặng 15 ngày khi đăng ký gói 3 tháng, 30 ngày với gói 6 tháng và 60 ngày với gói 12 tháng.
77.000 đ/ tháng