Closure trong JavaScript | JavaScript nâng cao
Ғылым және технология
👉 Xem Lộ Trình Học: fullstack.edu.vn/learning-paths
👉 Đăng Ký Học Offline Tại F8: short.f8team.dev/dang-ky-hoc-...
Video này chúng ta sẽ tới với khái niệm về tính bao đóng trong JS đó là Closure trong JavaScript | JavaScript nâng cao
#hoclaptrinh #hoclaptrinhmienphi #javascript #javascript_advanced #frontend #backend #devops #f8
-------
☻ Phần mềm sử dụng trong video:
Công cụ dịch Tiếng Anh: bit.ly/2Wsuhet
Công cụ đo đạc giao diện web: s.net.vn/D8kL
Công cụ viết CV xin việc chuyên nghiệp: mycv.vn
--------------
☻ Khóa học lập trình web MIỄN PHÍ:
Kiến thức nhập môn: fullstack.edu.vn/courses/less...
Xây dựng giao diện với HTML, CSS: fullstack.edu.vn/courses/html...
Xây dựng web responsive: fullstack.edu.vn/courses/resp...
Lập trình Javascript cơ bản: fullstack.edu.vn/courses/java...
Lập trình Javascript nâng cao: fullstack.edu.vn/courses/java...
Làm việc với Terminal & Ubuntu: fullstack.edu.vn/courses/wind...
Xây Dựng Website với ReactJS: fullstack.edu.vn/courses/reactjs
Xây dựng web với Node & Express: fullstack.edu.vn/courses/nodejs
HTML, CSS tips: fullstack.edu.vn/courses/html...
Ứng dụng cảnh báo khi sờ lên mặt: fullstack.edu.vn/courses/tool...
Xem thêm tại: fullstack.edu.vn/courses
-------------------------------------
F8 Official
(c) Sơn Đặng
Website: fullstack.edu.vn
Facebook cá nhân: / sondnf8
Nhóm Học Lập Trình Web: / f8official
Email: contact@fullstack.edu.vn
© Bản quyền thuộc về Channel F8 Official ☞ Do not Reup
© Nghiêm cấm sử dụng video nhằm mục đích thương mại dưới mọi hình thức.
Пікірлер: 102
*Từ video sau chất lượng video sẽ được cải thiện hơn nữa nhé anh em 😘* Trong video mình có nói tới "Tính Private trong OOP" là bị nhầm nhé, phải là "Tính đóng gói (encapsulation) trong OOP".
@vuongqtvn
3 жыл бұрын
❤️
@dokwon68
3 жыл бұрын
❤️
3 жыл бұрын
Chắc là mới mua Mic rồi. :)
@datwilliama2
3 жыл бұрын
😍
@xuanthuc189
3 жыл бұрын
Nhờ @F8 Official giải thích hộ vì sao b lại undifine: var a; var b = 0; function createCounter() { let counter = 0; function increase() { a = counter; return ++counter; } b = a; return increase; } const counter1 = createCounter(); counter1(); console.log(a); console.log(b); counter1(); console.log(a); console.log(b); counter1(); console.log(a); console.log(b); counter1(); console.log(a); console.log(b); KẾT QUẢ: 0 undefined 1 undefined 2 undefined 3 undefined
Đúng đợt chuẩn bị phỏng vấn thì a ra video mới. Mãi yêu!
Pha giải thích cuối cùng từ phút 39, mình hoàn toàn đồng ý luôn. Cực kỳ dễ nhầm lẫn những khái niệm nâng cao trong JS nếu không thực sự hiểu nó. Ngày trước mình đã rơi vào trường hợp này rồi, và mình đi đọc blogs (tiếng Việt) thì nó càng dắt mình tới sự khó hiểu chồng chất vì mỗi người lại có 1 cách giải thích khác nhau. Cảm ơn anh Sơn rất nhiều!
lên video liên tục luôn xem thích ghê, yêu bác Sơn
Cảm ơn anh
Em mấy này trong đồ án, mà giờ em mới hiểu tường tận như thế này. Cảm ơn anh
Thầy dậy cực kỳ chi tiết và dễ hiểu.
Video tiếp theo anh làm về Hight order function với Currying là đủ bộ nè.
e hiểu như vậy đúng chưa anh. Như trong bài scope anh nói là biến global sẽ không được xóa ra khỏi bộ nhớ, chỉ những biến trong scope '{}' mới được xóa ra khỏi bộ nhớ. Ứng dụng trong clousure như thế này: function log(l) { return function(str) { console.log(l + str) } } // biến này là biến global lưu giá trị là 'info'. Nó không được xóa ra khỏi bộ nhớ const getInfo = log('info') getInfo('email') // do getInfo vẫn còn lưu giá trị là 'info' nên khi getInfo lần nữa thì vẫn in ra giá trị cũ
Mong anh tích cực ra video cho khoá JS nâng cao nhé anh
Cảm ơn anh vì video, quá tuyệt vời. EM đang cấn phần closure xem video của anh giải thích về scope và closure xong thông não luôn.
@F8VNOfficial
2 жыл бұрын
Cảm ơn em nhiều nha
Cảm ơn bạn vì những video giải thích rất tường tận
đúng cái em đang cần, cảm ơn anh ạ
cái này mình nghĩ mình sẽ giải thích khác, counter1 trỏ đến createCounter(), mà createCounter bao gồm counter và increase(), như vậy có nghĩa là cả 2 sẽ được lưu lại giá trị trong RAM, cho nên các lần tới gọi lại thì sẽ đồng thời gọi lại giá trị counter cũ và hàm increase() cũ, vậy nên các lần sau mới có giá trị 1,2,3 Trừ phi counter1 bị huỷ, bằng ko giá trị sẽ vẫn tiếp tục tăng lên
Theo mình hiểu thì khi gọi một biến instance thì chương trình sẽ tạo ra một object function ở vùng HEAP( và sẽ tồn tại luôn cho đến khi ctrinh kết thúc). Tạo bấy nhiêu biến instance thì sẽ có bấy nhiêu Object function tồn tại độc lập ở vùng HEAP. Vậy nên closure cũng chỉ là một cách gọi về mặt kỹ thuật bên javascript. Ai học qua C++ hoặc Java hoặc C# rồi thì sẽ thấy dễ hiểu hơn.
@SillyLeizy
2 жыл бұрын
Đúng r, hàm trong js cũng chỉ là 1 object thôi
a là ng dạy dễ hiểu và chính xác nhất e từng học
@F8VNOfficial
2 жыл бұрын
Cảm ơn em nhiều nha, chúc e học tốt
cho em hỏi công cụ phóng to web (ko bị responsive) của a Sơn là gì thế ạ
em thấy closure giống kiểu class hay constructor function cũng gọn mà private cao
cám ơn anh ạ mặc dù dùng rất nhiều nhưng vẫn chưa hiểu được bản chất
Mn cho mình hỏi chỗ function const save = () => localStorage.setItem(key,....) ạ. Hàm này ko có đối số vậy 'key' đó nó tham chiếu key của createStorage hay sao ạ
vậy là createSlice() của redux-toolkit cũng dựa theo logic của closure hả a
vậy là dòng 14 15 16 khi được gọi là nó tạo ra 3 thằng phạm vị khác nhau cùng bậc đúng k a. Hay là dòng 14 gọi hàm increase ra thì khi return ++counter là mất rồi tới dòng 15 lại tiếp như thế ạ
Hóng video prototype của a
Hay quá a ơi !
Hóng quá
Cái này mà mới học thì khó, còn đã học qua hướng đối tượng thì thấy dễ
sao chỗ return store[key] mà ko phải là store(key) vậy mọi người. Mong ai chỉ giúp mình với
Cần bạn nào giải thick giúp m đoạn delete store[key] tại sao lại xóa dk
Clousure mà không truy cập biến ngoài phạm vi, thì còn đc gọi là closure không vậy ạ.
cảm ơn anh rất nhiều ạ :D
tuyệt vời a ơi
xịn anh ơi!
xem giải thích cơ chế closure bên python sẽ biết tường tận closure hoạt động thế nào nhé. Và clousure là 1 trong những cơ chế cơ bản của FP, ứng dụng phổ biến nhất là decorator dùng trong express nodejs và usestate của react
a zai dạy cuốn vs dễ hỉu vãi ❤
A ơi làm binding trong JavaScript đi a
Các bài giảng của F8 quá tuyệt vời. Cảm ơn bạn. Điều gì sẽ xảy ra nếu đổi từ "let counter = 0" thành "const counter = 0". Sẽ ăn lỗi ko ? Nếu có thì bắt đầu lỗi từ console.log thứ 1 hay 2.
@F8VNOfficial
2 жыл бұрын
const mà gán lại thì gặp TypeError ngay bạn, cái này hình như được nhắc tới trong JS cơ bản rồi mà bạn ơi
Thích nghe giọng a Sơn v.ch
quá hay anh ơi
@F8VNOfficial
Жыл бұрын
Thank em nhiều nhaaa
Anh dạy Classes của JavaScript lun đi anh
Tâm huyết quá anh ơi :v
hóng video về tham trị và tham chiếu anh ơi.
@duyanh6909
3 жыл бұрын
Có r mà bạn, tìm lại là có
quá dữ anh ơi
Closure nó là một loại higher order function. Có khả năng ghi nhớ lại cái biến của hàm cha mặc dù hàm cha đã bị hủy. Cái này ứng dụng vào trong tính chất encapsulation của OOP trong js.
@khoatran1535
2 жыл бұрын
HOF,callback vs nested Fn có vài định nghĩa hơi giống nhau nhỉ
Giờ chờ anh ra video về "this" thôi
@tranuchieu1718
3 жыл бұрын
This dễ mà tự tìm hiểu cx đc nhé
cho mình hỏi ngu cái nhé! các bác cao nhân trả lời giúp em với.... học code và các ngôn ngữ lập trình như f8 đang dạy sau này có thể nhảy qua làm về mảng blockchain được không nhỉ?
@tranucduy742
2 жыл бұрын
bạn không hỏi sai, cái sai chính là ở trong đầu bạn
Hay
Anh ơi localStorage mình học ở bài nào vậy ạ
@dnnhacbuon8171
2 жыл бұрын
không có, lên gg học :v
làm async await đi a
(34:05) Không có duyên với Mercedes, chắc là chỉ được đi Porsche thôi. Oke anh Sơn ạ :)))
@F8VNOfficial
Жыл бұрын
Haha có mỗi em để ý được luôn ấy :))) Ước mơ thôi em ơi
a sơn ơi, nếu hàm increase mà retunr về count + 1 không phải count++ tại sao nó k lên kết quả tăng dần mà chỉ ra kết quả là 1 vậy a.
@F8VNOfficial
2 жыл бұрын
count++ trả về kết quả của count trước khi + thêm 1 em nhé
@rennyka5185
2 жыл бұрын
return count + 1 không làm thay đổi giá trị của count, do đó khi call lại bao nhiêu lần đi nữa thì nó luôn trả về giá trị 0 + 1 = 1. Nếu bạn sử dụng return count++ thì sẽ tăng giá trị của count, tuy nhiên return count++ trả về giá trị count trước khi đc tăng nên sẽ in ra 0. sau đó các lần console.log tiếp theo sẽ là 1,2 dựa trên giá trị count đã tăng
có hàm nào ko ghi nhớ nơi nó tạo ra ko a
@F8VNOfficial
6 ай бұрын
Ko em. Closure nó là tính chất tự nhiên của hàm trong JS rồi em.
Hiểu giống như referance nhỉ
a dạy 1 framework front-end đi ạ, angular thì càng tốt ạ
@F8VNOfficial
2 жыл бұрын
A ko chuyên angular nên chưa share về nó được, anh mạnh về React hơn nên sẽ share React trước nha
@dnnhacbuon8171
2 жыл бұрын
@@F8VNOfficial làm node js trước a ơi react sau :V
@dnnhacbuon8171
2 жыл бұрын
@@F8VNOfficial có base js rồi tự học framework front end đc a ơi bên backend còn databse sẽ khó tự học hơn :3
Dạ chào chú, con năm nay học lớp 8 và muốn theo nghành CNTT mảng An ninh mạng và an toàn thông tin. Chú có thể cho con tí kinh nghiệm được không ạ?
@nghiahoang9201
Жыл бұрын
lớp 8 đã học đến đây r, ghê đấy
@ComradeBao
Жыл бұрын
@@nghiahoang9201 Năm nay em lớp 9 rồi, chuẩn bị lên lớp 10
@HieuNguyen-vn9vm
Жыл бұрын
Giờ cố học thật tốt ở trường đi, sau thi đh để có điểm cao vào mấy trường top có đào tạo về ATTT ấy, theo như mình nhớ là KMA, UIT, PTIT,.. gg thêm nhá
22:38 toán tử này chắc cũng giống or || mn nhỉ
Anh ơi ra video về OOP và CTDL giải thuật đi ạ! Với lại sao em không đăng nhập/đăng ký trên web được ạ? Nó cứ load về trang chủ.
@uuu6882
3 жыл бұрын
ko có đâu bạn
anh livestrem giao lưu với mn đi
@sontungcenterreal5824
3 жыл бұрын
cần lắm 1 ngày ad họp fan. nói chuyện tư vấn về ngành nghề, hướng đi, rồi đủ thứ khác nữa. ông ad am hiểu đời sống lắm. nghe cách nói chuyện là biết trình ông ở đâu rồi
Hóng immuatable
Quá Kỹ tính, em không được kỹ tính, từ ngày xem Anh giảng bản thân có động lực cố gắng thay đổi, mong Anh làm video về chia sẻ về chủ đề này trong lập trình để Anh /Em có động lực cải thiện vì trong lập trình rất cần sự kỹ tính, chỉn chu.
Cái này e code nhiều tự biết luôn :v mà lần đầu nghe closure
@F8VNOfficial
3 жыл бұрын
Đúng rồi em, cái này nhiều người cứ code là tự biết nhưng lúc phỏng vấn gặp câu hỏi về closure thì lại không diễn tả được ý.
@hiephoang601
3 жыл бұрын
@@F8VNOfficial anh ơi, thẻ meta charset vs thẻ html lang="vi" khacs gif nhau vaayj a?
7 năm kinh nghiệm có khác :')
@glorynt7925
3 жыл бұрын
Khác bọt chỗ khác dạy =))
phần này khó hiểu ghê
Quá chẤt a
@tapquenmoitinhdau
2 жыл бұрын
Hóng prototype ạ
bố nào dislike kia???
const parent = () => { const string = "hello"; console.log(string); return function (childString) { console.log(`${string} ${childString ? childString : ""}`); }; }; const child = parent // child = parent const child = parent () // child = parent''returned result'