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

  • @F8VNOfficial
    @F8VNOfficial3 жыл бұрын

    *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

    @vuongqtvn

    3 жыл бұрын

    ❤️

  • @dokwon68

    @dokwon68

    3 жыл бұрын

    ❤️

  • 3 жыл бұрын

    Chắc là mới mua Mic rồi. :)

  • @datwilliama2

    @datwilliama2

    3 жыл бұрын

    😍

  • @xuanthuc189

    @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

  • @thinhnt1711
    @thinhnt17113 жыл бұрын

    Đúng đợt chuẩn bị phỏng vấn thì a ra video mới. Mãi yêu!

  • @tandang7191
    @tandang71912 жыл бұрын

    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!

  • @datwilliama2
    @datwilliama23 жыл бұрын

    lên video liên tục luôn xem thích ghê, yêu bác Sơn

  • @HaiNguyen-bx4kr
    @HaiNguyen-bx4kr3 жыл бұрын

    Cảm ơn anh

  • @duykhanhle9441
    @duykhanhle94413 жыл бұрын

    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

  • @petslover4306
    @petslover43062 жыл бұрын

    Thầy dậy cực kỳ chi tiết và dễ hiểu.

  • @cuongle-fr2oo
    @cuongle-fr2oo3 жыл бұрын

    Video tiếp theo anh làm về Hight order function với Currying là đủ bộ nè.

  • @thang8617
    @thang86173 жыл бұрын

    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ũ

  • @kuro7048
    @kuro70483 жыл бұрын

    Mong anh tích cực ra video cho khoá JS nâng cao nhé anh

  • @DuongLe-em4dg
    @DuongLe-em4dg2 жыл бұрын

    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

    @F8VNOfficial

    2 жыл бұрын

    Cảm ơn em nhiều nha

  • @hongta9509
    @hongta9509 Жыл бұрын

    Cảm ơn bạn vì những video giải thích rất tường tận

  • @letranmylinh1996
    @letranmylinh19963 жыл бұрын

    đúng cái em đang cần, cảm ơn anh ạ

  • @fukemy123
    @fukemy1239 ай бұрын

    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

  • @lethienngan
    @lethienngan2 жыл бұрын

    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

    @SillyLeizy

    2 жыл бұрын

    Đúng r, hàm trong js cũng chỉ là 1 object thôi

  • @namnguyen-dd7qh
    @namnguyen-dd7qh2 жыл бұрын

    a là ng dạy dễ hiểu và chính xác nhất e từng học

  • @F8VNOfficial

    @F8VNOfficial

    2 жыл бұрын

    Cảm ơn em nhiều nha, chúc e học tốt

  • @giangle2149
    @giangle21493 жыл бұрын

    cho em hỏi công cụ phóng to web (ko bị responsive) của a Sơn là gì thế ạ

  • @sharkboyy8769
    @sharkboyy87693 жыл бұрын

    em thấy closure giống kiểu class hay constructor function cũng gọn mà private cao

  • @tronguctran1433
    @tronguctran14333 жыл бұрын

    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

  • @HungLe-po5fm
    @HungLe-po5fm2 жыл бұрын

    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 ạ

  • @hungnguyen5966
    @hungnguyen59662 жыл бұрын

    vậy là createSlice() của redux-toolkit cũng dựa theo logic của closure hả a

  • @thuannguyenlehoa9711
    @thuannguyenlehoa97112 жыл бұрын

    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ế ạ

  • @nguyenhoangnguyen6121
    @nguyenhoangnguyen61213 жыл бұрын

    Hóng video prototype của a

  • @mediastudio5422
    @mediastudio54223 жыл бұрын

    Hay quá a ơi !

  • @duytaovo4051
    @duytaovo40513 жыл бұрын

    Hóng quá

  • @manhuc4259
    @manhuc42592 жыл бұрын

    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ễ

  • @PhongTran-wk7ox
    @PhongTran-wk7ox2 жыл бұрын

    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

  • @dohuyhoajaekin
    @dohuyhoajaekin Жыл бұрын

    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

  • @atNguyen-sy3il
    @atNguyen-sy3il Жыл бұрын

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

  • @nguyennhubuuuc4647
    @nguyennhubuuuc46473 жыл бұрын

    cảm ơn anh rất nhiều ạ :D

  • @dienphamvan3094
    @dienphamvan30943 жыл бұрын

    tuyệt vời a ơi

  • @phapnguyen155
    @phapnguyen1553 жыл бұрын

    xịn anh ơi!

  • @huachiquan2304
    @huachiquan23048 ай бұрын

    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

  • @meozotrithichtuki
    @meozotrithichtuki4 ай бұрын

    a zai dạy cuốn vs dễ hỉu vãi ❤

  • @thienhuynhnhatthien9819
    @thienhuynhnhatthien98193 жыл бұрын

    A ơi làm binding trong JavaScript đi a

  • @nghialehieu3651
    @nghialehieu36512 жыл бұрын

    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

    @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

  • @juhandvan
    @juhandvan3 жыл бұрын

    Thích nghe giọng a Sơn v.ch

  • @thanhattran8101
    @thanhattran8101 Жыл бұрын

    quá hay anh ơi

  • @F8VNOfficial

    @F8VNOfficial

    Жыл бұрын

    Thank em nhiều nhaaa

  • @DuQuocKhanh--
    @DuQuocKhanh--2 жыл бұрын

    Anh dạy Classes của JavaScript lun đi anh

  • @quanganhnguyen7252
    @quanganhnguyen72523 жыл бұрын

    Tâm huyết quá anh ơi :v

  • @quanghuytv9579
    @quanghuytv95793 жыл бұрын

    hóng video về tham trị và tham chiếu anh ơi.

  • @duyanh6909

    @duyanh6909

    3 жыл бұрын

    Có r mà bạn, tìm lại là có

  • @aotanhao9378
    @aotanhao93783 жыл бұрын

    quá dữ anh ơi

  • @thanhvx1468
    @thanhvx14683 жыл бұрын

    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

    @khoatran1535

    2 жыл бұрын

    HOF,callback vs nested Fn có vài định nghĩa hơi giống nhau nhỉ

  • @vor120
    @vor1203 жыл бұрын

    Giờ chờ anh ra video về "this" thôi

  • @tranuchieu1718

    @tranuchieu1718

    3 жыл бұрын

    This dễ mà tự tìm hiểu cx đc nhé

  • @sontungcenterreal5824
    @sontungcenterreal58243 жыл бұрын

    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

    @tranucduy742

    2 жыл бұрын

    bạn không hỏi sai, cái sai chính là ở trong đầu bạn

  • @DuyTran-ss4lu
    @DuyTran-ss4lu2 жыл бұрын

    Hay

  • @navuong7953
    @navuong79533 жыл бұрын

    Anh ơi localStorage mình học ở bài nào vậy ạ

  • @dnnhacbuon8171

    @dnnhacbuon8171

    2 жыл бұрын

    không có, lên gg học :v

  • @nhatminh7956
    @nhatminh79563 жыл бұрын

    làm async await đi a

  • @duytungnguyen7356
    @duytungnguyen7356 Жыл бұрын

    (34:05) Không có duyên với Mercedes, chắc là chỉ được đi Porsche thôi. Oke anh Sơn ạ :)))

  • @F8VNOfficial

    @F8VNOfficial

    Жыл бұрын

    Haha có mỗi em để ý được luôn ấy :))) Ước mơ thôi em ơi

  • @upagency7439
    @upagency74392 жыл бұрын

    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

    @F8VNOfficial

    2 жыл бұрын

    count++ trả về kết quả của count trước khi + thêm 1 em nhé

  • @rennyka5185

    @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

  • @phamhoa5590
    @phamhoa55906 ай бұрын

    có hàm nào ko ghi nhớ nơi nó tạo ra ko a

  • @F8VNOfficial

    @F8VNOfficial

    6 ай бұрын

    Ko em. Closure nó là tính chất tự nhiên của hàm trong JS rồi em.

  • @nghiangoquang
    @nghiangoquang2 жыл бұрын

    Hiểu giống như referance nhỉ

  • @namnguyen-dd7qh
    @namnguyen-dd7qh2 жыл бұрын

    a dạy 1 framework front-end đi ạ, angular thì càng tốt ạ

  • @F8VNOfficial

    @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

    @dnnhacbuon8171

    2 жыл бұрын

    @@F8VNOfficial làm node js trước a ơi react sau :V

  • @dnnhacbuon8171

    @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

  • @ComradeBao
    @ComradeBao3 жыл бұрын

    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

    @nghiahoang9201

    Жыл бұрын

    lớp 8 đã học đến đây r, ghê đấy

  • @ComradeBao

    @ComradeBao

    Жыл бұрын

    @@nghiahoang9201 Năm nay em lớp 9 rồi, chuẩn bị lên lớp 10

  • @HieuNguyen-vn9vm

    @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á

  • @igdev6095
    @igdev60953 жыл бұрын

    22:38 toán tử này chắc cũng giống or || mn nhỉ

  • @yenthanhle5248
    @yenthanhle52483 жыл бұрын

    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

    @uuu6882

    3 жыл бұрын

    ko có đâu bạn

  • @phucnguyenthi7356
    @phucnguyenthi73563 жыл бұрын

    anh livestrem giao lưu với mn đi

  • @sontungcenterreal5824

    @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

  • @glorynt7925
    @glorynt79253 жыл бұрын

    Hóng immuatable

  • @duythanhphammanh9054
    @duythanhphammanh90543 ай бұрын

    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.

  • @tranuchieu1718
    @tranuchieu17183 жыл бұрын

    Cái này e code nhiều tự biết luôn :v mà lần đầu nghe closure

  • @F8VNOfficial

    @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

    @hiephoang601

    3 жыл бұрын

    @@F8VNOfficial anh ơi, thẻ meta charset vs thẻ html lang="vi" khacs gif nhau vaayj a?

  • @igdev6095
    @igdev60953 жыл бұрын

    7 năm kinh nghiệm có khác :')

  • @glorynt7925

    @glorynt7925

    3 жыл бұрын

    Khác bọt chỗ khác dạy =))

  • @trananhquan4151
    @trananhquan41513 жыл бұрын

  • @hoangson8609
    @hoangson86093 жыл бұрын

    phần này khó hiểu ghê

  • @tapquenmoitinhdau
    @tapquenmoitinhdau2 жыл бұрын

    Quá chẤt a

  • @tapquenmoitinhdau

    @tapquenmoitinhdau

    2 жыл бұрын

    Hóng prototype ạ

  • @sontungcenterreal5824
    @sontungcenterreal58243 жыл бұрын

    bố nào dislike kia???

  • @user-xl9nw3ql8v
    @user-xl9nw3ql8v4 ай бұрын

    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'

  • @HoaNguyen-ez9lh
    @HoaNguyen-ez9lh2 жыл бұрын

Келесі