🟢 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.

Tiêu chí
JavaScript
Java

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:

  1. Number

  2. String

  3. Boolean

  4. null

  5. undefined

  6. Symbol (ES6)

  7. BigInt (ES2020)


3. Sự khác biệt giữa var, letconst 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ị

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 letconst, 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 ===== trong JavaScript.

  • ==so sánh bằng "loose"ép kiểu tự động nếu cần.

  • ===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?

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. nullundefined 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?

  1. Function declaration:

function sum(a, b) {
  return a + b;
}
  1. Function expression:

const sum = function(a, b) {
  return a + b;
};
  1. 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:

Đặc điểm
Arrow Function
Regular Function

this

Không binding riêng, dùng lexical this

Binding theo context gọi

arguments object

❌ Không

✅ Có

Dùng làm constructor

❌ Không được

✅ Có thể dùng với new


10. Toán tử typeofinstanceof 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