Javascript - Và các khái niệm quan trọng 🎉
ZERO
Khi bắt đầu với ngôn ngữ lập trình Javascript chúng ta sẽ phải nắm một vài khái niệm và keywords quan trọng, khi hiểu rõ chúng thì việc học sẽ trở nên dễ dàng hơn? 🤔 Hãy cùng mình khám phá qua bài blog này nhé! 😉
Khi bắt đầu với ngôn ngữ lập trình Javascript chúng ta sẽ phải nắm một vài khái niệm và keywords quan trọng, khi hiểu rõ chúng thì việc học sẽ trở nên dễ dàng hơn? 🤔 Hãy cùng mình khám phá qua bài blog này nhé! 😉
function Car(name, color) {
this.name = name
this.color = color
}
Car.prototype.run = function () {
// Context
function test() {
console.log (this) // this là window
// test là func chứ ko phaải method => THIS trong func là window
}
test()
const testArrowFunc = () => {
console.log (this) // => this là Car
//arrow function không có context nên nó lâấy context cuủa cha
}
testArrowFunc()
}
const porsche = new Car('Porsche', 'yellow')
console.log(porsche.run())
This trong Javascript đề cập đến đối tượng mà nó thuộc vềfunction createStore() {
let car=[]
return {
show() {
console.log(car)
}
}
}
const app = createStore()
app.show()
//gán createStore cho 1 biến app global, thì khi hàm createStore() được thực thi xong
// giá trị cuủa biêến car vẫn chưa bị xoá
function makeCouter() {
let couter=0
function increase() {
return ++couter
}
return increase
}
const increase1= makeCouter()
console.log(increase1()) // 1
console.log(increase1()) //2
console.(log(increase1()) //3
// Biến couter chưa được xoá khỏi bộ nhớ
// couter bên trong increate vẫn còn refer đến couter bên trong hàm
// makeCouter và makeCouter đã được lưu ở biến bên ngoài
(function() {
// code trong này sẽ được thực thi ngay khi hàm được định nghĩa
})();
(()=> {
// code trong này sẽ được thực thi ngay khi hàm được định nghĩa
})()
;(()=> {
// Nếu mà phía trước không dùng ';' để kết thúc dòng
// thì nên đặt ';' ở đầu IIFE để tránh gây lỗi
})();
!function() {
// code trong này sẽ được thực thi ngay khi hàm được định nghĩa
}();
Promise
Là một cơ chế để xử lý các tác vụ bất đồng bộ, có 3 trạng thái:
// Tạo một Promise
let myPromise = new Promise((resolve, reject) => {
// Thực hiện một tác vụ bất đồng bộ
setTimeout(() => {
// Giả sử tác vụ này thành công sau 2 giây
let randomNum = Math.random();
if (randomNum >= 0.5) {
resolve(randomNum); // Giải quyết Promise nếu thành công
} else {
reject("Tác vụ thất bại"); // Từ chối Promise nếu không thành công
}
}, 2000);
});
// Sử dụng Promise đã tạo
myPromise.then((result) => {
console.log("Tác vụ hoàn thành, kết quả là: " + result);
}).catch((error) => {
console.error("Tác vụ bị từ chối với lỗi: " + error);
});
async await
async: Dùng để định nghĩa một hàm bất đồng bộ. Khi một hàm được khai báo bằng từ khóa async, nó sẽ luôn trả về một Promise.await: Được sử dụng trong một hàm được đánh dấu async để đợi một Promise. await dừng thực thi của hàm đó cho đến khi Promise được giải quyết hoặc bị từ chối.// Hàm bất đồng bộ giả định
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
// Hàm bất đồng bộ sử dụng async và await
async function asyncFunction() {
console.log("Bắt đầu");
try {
await delay(2000); // Chờ 2 giây
console.log("Đã chờ xong 2 giây");
await delay(1500); // Chờ thêm 1.5 giây
console.log("Đã chờ xong 1.5 giây nữa");
} catch (error) {
console.error("Đã xảy ra lỗi:", error);
}
console.log("Kết thúc");
}
// Gọi hàm async
asyncFunction();
Cảm ơn cả nhà đã xem đến cuối! ❤️