Trong video này mình chưa đề cập tới phạm vi module (Module scope). Có nghĩa là khi các bạn sử dụng ES6 Module thì mỗi module sẽ tạo ra một phạm vi riêng. Biến khai báo tại cấp cao nhất trong module vẫn chỉ thuộc module mà không trở thành biến Global.
31:19: khi const increase1 = makeCounter() thì increase1 sẽ thành 1 hàm như vậy: let count = 0; function counter() { return ++count } nên mỗi khi gọi increase1() thì hàm counter sẽ chạy và khi đó nó lại tham chiếu tới biến count ở bên ngoài nó, và khi đứng trong hàm counter() thì biến count đó được xem là global đối với hàm counter đó, nên giá trị trả về sẽ là increment của count trước đó.
cosnt (constant) là hằng số - nó k thể thay đổi. b tạo ra biến b là 1 const thì nó bắt buộc phải được gán bằng 1 giá trị (lưu vào 1 ô nhớ) và KHÔNG THỂ THAY ĐỔI giá trị nhé
var a = 1; function b() { a = 10; return; function a() {} } b(); console.log(a); - Sao em thay tên function a() thành 1 tên khác thì nó ảnh hưởng tới kết quả nhỉ
@@F8VNOfficial var a = 1; function b() { a = 10; return; function b() { } } b(); console.log(a); Khi em thay function a( ) thì kết quả ra là 1 , nhưng khi em thay Function a () thành c( ) thì nó lại kết quả là 10 ANH AH
@@TienNguyen-hz9in Chìa khóa nằm ở chỗ từ khóa return. Sau từ khóa return thì hàm vẫn được tạo ra. Khi đặt tên hàm là function a() thì lúc này a thành kiểu dữ liệu tham chiếu dẫn đến nó sẽ cấp bộ nhớ cho a ghi đè lại giá trị a=10 trong scope nên kq là 1, còn khi đặt hàm là function c() thì biến a=10 trong scope vẫn còn nên kq là 10. Mình mới học nên ko biết suy luận vậy có đúng ko ? mong @F8 Official hướng dẫn thêm.
var a = 1; function b() { a = 10; console.log(c); return; function c() { console.log('Hello'); } } b(); console.log(a); KẾT QUẢ LÀ: ƒ c() { console.log('Hello'); } 10
Trong video này mình chưa đề cập tới phạm vi module (Module scope). Có nghĩa là khi các bạn sử dụng ES6 Module thì mỗi module sẽ tạo ra một phạm vi riêng. Biến khai báo tại cấp cao nhất trong module vẫn chỉ thuộc module mà không trở thành biến Global.
anh làm đi em gặp vấn đề này trong module
Mình nghĩ Module scope cũng giống scope thôi chứ nhỉ
@@LapTrinhQuaNhanh là một loại phạm vi nữa thôi bạn. Global, module, function và block bạn nha. Chỉ là mình chưa nhắc tới trong video thôi
Hay quá. Mình đang học khoá cơ bản. Rất cảm ơn và chức các bạn mạnh khẻo
@@_NguyenManhToan_ Vâng, tôi rất khẻo
31:19: khi const increase1 = makeCounter() thì increase1 sẽ thành 1 hàm như vậy:
let count = 0;
function counter() {
return ++count
}
nên mỗi khi gọi increase1() thì hàm counter sẽ chạy và khi đó nó lại tham chiếu tới biến count ở bên ngoài nó, và khi đứng trong hàm counter() thì biến count đó được xem là global đối với hàm counter đó, nên giá trị trả về sẽ là increment của count trước đó.
Một video quá hữu ích, sau khi xem video này mình đã hiểu rõ hơn về phạm vi, tự tin code hơn. cảm ơn F8
Phải like ngay vì đây là bài giảng hay nhất về scope mình từng xem :))))
Đây là video hay nhất mà mình biết khi học về scope. Cảm ơn F8, cảm ơn tác giả.
Đỉnh luôn anh ơi. Anh giảng dễ hiểu quá.
đỉnh quá anh sơn ơi, mấy ngày nay e làm BT gặp mấy vấn đề này mãi, giờ hiểu rõ hơn rồi
Bạn ơi cho mình xin link luyện bài tập js đc không
cám ơn anh nhiều lắm. anh tiếp tục ra video dạy học nữa đi ạ
Xem clip a cũng lâu rồi , nay xem lại thấy a giảng hay lạ thường , hí hí
Chỉ cần là video của a Sơn thì dài cũng rất đáng để ngồi coi hết 😍
Chữ rất dễ nhìn, giảng rất dễ hiểu. Thank you admin
hiểu sâu luôn, tks a sơn ♥♥♥♥♥
Cảm ơn anh. Cứ làm đầy đủ chi tiết đi ạ dài mà chi tiết thì quá ok rồi
Anh giảng rất hay
Cảm ơn anh đã hướng dẫn những bài học bổ ích. Hy vọng anh làm thêm về ReactJS ạ.
Anh đang cố gắng đây, khả năng cuối tháng bắt đầu ra video nha
- khi gọi mỗi hàm thì mới có 1 phạm vi mới được tạo ra còn khi khái báo thì cái hàm đó sẽ thuộc cái phạm vi mà nó được khai báo mà thôi
cuối cùng trong video của anh cũng có chữ nâng cao 😙😙
- code block: ở bất cứ đâu có cái cặp ngoặc {} thì khi khai báo biến với từ khoá let và const thì cái biến đó chỉ dùng đc trong cái khối đấy
anh có video nào về phương thức bind và từ khóa this trong js không a
Anh oi, anh co the day them ve axios, asyn await duoc khong a?
Cho mình hỏi tua đến phút 14, luôn tạo ra phạm vị mới, nhưng nó vẫn nằm trong global cope, hay nó tạo ra 3 scope riêng?
hay quá a ơi
Dài vậy xem mới thích anh
- các hàm có thể truy cập các biến đc khai báo trong phạm vi của nó và bên ngoài nó
quá chất lượng
em học hiểu luôn anh sơn ơi
qua hay, thanks so much!
Vid a này làm hay nó ở cái level max
Hayyy a oi
đỉnh
Hay quá a ơi
local scope: nhưng cái biến, function đươc khai báo trong phạm vi của 1 hàm thì chỉ sử dụng đc trong cái hàm đó
Hay quá
bài hay lắm anh
Cảm ơn anh
Tuần 2 Video
Anh ơi làm sao để thao tác 3 ,4 dòng cùng 1 lúc vậy ạ
Ctrl + D
Async Await nữa a ơi
Const func = async (a) => {
Const b = await a
Return b
}
Nó chỉ có vậy thôi khi nào code của bạn bất đồng bộ như bạn gọi api thì bạn sài
Video hình hơi giật xíu anh ạ!
quá đỉnh :D
Thằng closures có ở tất cả các ngôn ngữ hay chỉ thằng JS mới có vậy anh???
Tất cả á bạn.
Nó là khái niệm chung
A sơn hình như gầy đi thì phải
b=null sao const không thay đổi được mà let thay đổi được vậy ạnh
cosnt (constant) là hằng số - nó k thể thay đổi. b tạo ra biến b là 1 const thì nó bắt buộc phải được gán bằng 1 giá trị (lưu vào 1 ô nhớ) và KHÔNG THỂ THAY ĐỔI giá trị nhé
♥️♥️♥️
A ơi, e cảm ơn a nhiều. Nhưng a cố giữ sức khoẻ, ăn uống nhiều vào ạ. Thấy a hơi gầy đi
Cảm ơn em nha
var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
console.log(a);
- Sao em thay tên function a() thành 1 tên khác thì nó ảnh hưởng tới kết quả nhỉ
Đâu ảnh hưởng tới kết quả e, đoạn mã e gửi thì console.log(a) ở phạm vi ngoài là 1
@@F8VNOfficial var a = 1;
function b() {
a = 10;
return;
function b() {
}
}
b();
console.log(a);
Khi em thay function a( ) thì kết quả ra là 1 , nhưng khi em thay Function a () thành c( ) thì nó lại kết quả là 10 ANH AH
@Hoàng Nguyễn Khi em thay function a( ) thì kết quả ra là 1 , nhưng khi em thay Function a () thành c( ) thì nó lại kết quả là 10 ANH AH
@@TienNguyen-hz9in Chìa khóa nằm ở chỗ từ khóa return. Sau từ khóa return thì hàm vẫn được tạo ra. Khi đặt tên hàm là function a() thì lúc này a thành kiểu dữ liệu tham chiếu dẫn đến nó sẽ cấp bộ nhớ cho a ghi đè lại giá trị a=10 trong scope nên kq là 1, còn khi đặt hàm là function c() thì biến a=10 trong scope vẫn còn nên kq là 10. Mình mới học nên ko biết suy luận vậy có đúng ko ? mong @F8 Official hướng dẫn thêm.
var a = 1;
function b() {
a = 10;
console.log(c);
return;
function c() {
console.log('Hello');
}
}
b();
console.log(a);
KẾT QUẢ LÀ:
ƒ c() {
console.log('Hello');
}
10
🥰🥰🥰🥰
- khai biến, hàm phạm vi global không nằm trong 1 cái hàm nào khác cả
ở bất cứ đâu cũng có thể truy cập được
global
có 3 loại phạm vi
càng về sau càng lú :))
Thầy dạy quá hay cực kỳ dễ hiểu. Dạy rất có tâm
- Mỗi lần gọi hàm nó sẽ tạo ra 1 cái phạm vi mới
a sơn bán áo ko nhỉ
🇻🇳❤️
Comment Đầu
anh tắt camera đi lâu lâu nhìn vào mất tập trung quá
♥️♥️♥️