🟢 Phần 1: JavaScript Cơ Bản
1. JavaScript là gì? Khác gì so với Java?
JavaScript là một ngôn ngữ lập trình dạng kịch bản (scripting), thường được sử dụng để tạo tính tương tác trên trang web. Nó chạy trên trình duyệt, single-threaded, interpreted, và dynamically typed.
Java là một ngôn ngữ lập trình hướng đối tượng hoàn chỉnh, strongly typed, biên dịch thành bytecode để chạy trên JVM.
Kiểu dữ liệu
Dynamic
Static
Môi trường chạy
Trình duyệt
JVM
Cú pháp OOP
Prototype-based
Class-based
Biên dịch
Interpreted
Compiled
Ứng dụng
Web frontend
Backend, Android, Enterprise
2. Các kiểu dữ liệu nguyên thủy (primitive types) trong JavaScript là gì?
Gồm 7 kiểu nguyên thủy:
Number
String
Boolean
null
undefined
Symbol
(ES6)BigInt
(ES2020)
3. Sự khác biệt giữa var
, let
và const
là gì?
var
, let
và const
là gì?Thuộc tính
var
let
const
Phạm vi (scope)
Function scope
Block scope
Block scope
Hoisting
Có hoisting (giá trị undefined
)
Có hoisting (không thể dùng trước khi khai báo)
Như let
Gán lại giá trị
Có
Có
Không
Khai báo lại
Có thể
Không
Không
4. Giải thích khái niệm hoisting trong JavaScript.
Hoisting là hành vi "kéo lên đầu" của khai báo biến và hàm.
Với
var
, khai báo sẽ được hoisted, nhưng gán giá trị thì không.Với
let
vàconst
, cũng được hoisted nhưng không thể truy cập trước khi khai báo (Temporal Dead Zone).Hàm dạng declaration cũng được hoisted đầy đủ (cả khai báo và định nghĩa).
console.log(a); // undefined
var a = 5;
5. Giải thích sự khác nhau giữa ==
và ===
trong JavaScript.
==
và ===
trong JavaScript.==
là so sánh bằng "loose" → ép kiểu tự động nếu cần.===
là so sánh bằng "strict" → so sánh cả kiểu dữ liệu và giá trị.
0 == '0'; // true
0 === '0'; // false
→ Luôn ưu tiên dùng ===
để tránh lỗi logic.
6. Làm thế nào để kiểm tra một biến có phải là undefined
?
undefined
?if (typeof variable === 'undefined') {
// variable chưa được định nghĩa hoặc undefined
}
Hoặc nếu biến đã được khai báo:
if (variable === undefined) {
// Chỉ kiểm tra giá trị undefined
}
Lưu ý: Nếu biến chưa khai báo, chỉ
typeof
mới an toàn kiểm tra.
7. null
và undefined
khác nhau như thế nào?
null
và undefined
khác nhau như thế nào?Đặc điểm
null
undefined
Ý nghĩa
Không có giá trị (cố tình gán)
Không được gán hoặc chưa định nghĩa
Kiểu dữ liệu
object
(bug lịch sử)
undefined
Sử dụng
Lập trình viên gán
Trình thông dịch tự sinh ra
8. Các cách khai báo hàm trong JavaScript?
Function declaration:
function sum(a, b) {
return a + b;
}
Function expression:
const sum = function(a, b) {
return a + b;
};
Arrow function (ES6):
const sum = (a, b) => a + b;
Function declaration được hoisting, còn function expression thì không.
9. Arrow function là gì? Khác gì so với regular function?
Arrow function là cú pháp rút gọn:
const greet = (name) => `Hello ${name}`;
Khác biệt chính:
this
Không binding riêng, dùng lexical this
Binding theo context gọi
Có arguments
object
❌ Không
✅ Có
Dùng làm constructor
❌ Không được
✅ Có thể dùng với new
10. Toán tử typeof
và instanceof
dùng để làm gì?
typeof
và instanceof
dùng để làm gì?typeof
: kiểm tra kiểu dữ liệu nguyên thủy
typeof 123 // "number"
typeof undefined // "undefined"
instanceof
: kiểm tra instance có phải là của constructor/class nào không
[] instanceof Array // true
new Date() instanceof Date // true
Last updated