Primitive Types & Reference Types trong Javascript | JavaScript nâng cao

แชร์
ฝัง
  • เผยแพร่เมื่อ 4 ธ.ค. 2024

ความคิดเห็น • 141

  • @F8VNOfficial
    @F8VNOfficial  2 ปีที่แล้ว +25

    Thực chất title đúng của bài này phải là "Primitive Types & Reference Types" các bạn nhé. Trong video mình có gọi Primitive Types & Reference Types là "Kiểu tham trị & Kiểu tham chiếu" là chưa hoàn toàn đúng, đúng phải là "Kiểu nguyên thủy & Kiểu tham chiếu". Và việc mình đặt có chứa từ "Tham trị & Tham chiếu" là vì mình tham khảo thêm nhiều nguồn ở VN cũng gọi vậy và coi là như vậy, nên mình đặt vậy để mang yếu tố SEO là chính (khi các bạn search trúng nó sẽ ra).
    Trong Javascript hoàn toàn không có "Pass by reference" nhé các bạn, nó hoàn toàn là "Pass by value". Chi tiết các bạn tham khảo giải thích của bạn Huỳnh Hoàng Hữu Huân ở đây:
    // Bắt đầu trích dẫn
    Trong những ngôn ngữ như C++, PHP thì khi truyền argument, sẽ có 2 cách: pass by value (truyền tham trị) và pass by reference (truyền tham chiếu). Nhưng JS hoạt động khác những ngôn ngữ đó, JS chỉ có thể pass argument by value.
    Nhưng điều đặc biệt của JS là kiểu dữ liệu của nó có 2 loại: primitive và preference type. Nhiều bạn hiểu lầm khi truyền argument có kiểu dữ liệu là preference type là pass by reference. Thực chất không phải vậy. Khi truyền argument kiểu preference type thì ta đang truyền 1 "bản copy của reference".
    const obj1 = { x: 2 }
    const testFunc = function(testObj) {
    testObject.x = 3
    }
    testFunc(obj1)
    Nếu nói đây là pass by reference (truyền tham chiếu) thì testObj và obj1 là cùng 1 thằng, nhưng thực ra testObj và ob1 là 2 thằng khác nhau, testObj là bản copy của thằng obj1 (pass by value) nhưng mà do trong JS, khi gán testObj = obj1 thì 2 thằng này cùng nhắm vào 1 object trong bộ nhớ Heap cho nên khi thay đổi testObject thì obj1 cũng thay đổi. Cách hành xử này giống với pass by reference nhưng thật chất lại khác
    // Kết thúc trích dẫn
    *Lưu ý: Rất nhiều nguồn ở VN cũng hiểu nhầm chỗ này, tuy nhiên nếu không học về những ngôn ngữ như C++ thì đoạn này chúng ta rất dễ hiểu nhầm.
    Và tiện đây, mình sẽ update lại tên video kia để tránh tranh luận trong tương lai. Việc này mình cũng nhận thiếu sót về mình và mong các bạn thông cảm nhé. Yêu mọi người ❤

    • @go_lang_thang
      @go_lang_thang 10 หลายเดือนก่อน

      Tiện tay anh làm thêm về Deep vs. Shallow Copy với ạ. Em cám ơn !

  • @vutu8895
    @vutu8895 3 ปีที่แล้ว +30

    Cám ơn anh không hết, anh giạy những thứ ngay cả khoá học có phí cũng không nhắc tới. Hơn hết là sự tâm huyết mà không khoá học có phí nào có được ❤

  • @dinhdinh8059
    @dinhdinh8059 3 ปีที่แล้ว +6

    Độ tập trung của anh tốt thật sự, ngoài đường đông, và ồn ào, bn người qua lại nhưng a vẫn giảng bài lưu loát. đỉnh quá

  • @trangnguyenthi6486
    @trangnguyenthi6486 3 หลายเดือนก่อน

    Qúa tỉ mỉ, tận tâm luôn, 1000 like cho bạn.

  • @HuyenNguyen-cd9ep
    @HuyenNguyen-cd9ep 3 ปีที่แล้ว +3

    Có những vấn đề tưởng chừng như đã hiểu nhưng cho đến khi xem video của anh thì...mới ngộ ra là mình chưa hiểu gì cả. Cảm ơn anh ạ

  • @usaava
    @usaava 3 ปีที่แล้ว +10

    Hay quá, dạy code ngay ngoài đường. Cần gì phải ở trong phòng mới dạy được. Code everywhere :)))

  • @thienminh4651
    @thienminh4651 11 หลายเดือนก่อน

    công nhận là anh này dạy hay rồi lấy ví dụ rất là dễ hiểu luôn

  • @trongnguyen75531
    @trongnguyen75531 2 หลายเดือนก่อน

    Các kiến thức này ai học nhập môn lập trình đều phải biết, ai không biết chỉ có đa số tay ngang học các khóa học JavaScript, Frontend các kiểu con đà điểu trên mạng, cưỡi ngựa xem hoa

  • @SonNguyen-bl3fo
    @SonNguyen-bl3fo 2 ปีที่แล้ว

    Chỉ biết nói 1 lời cảm ơn chân thành nhất tới a vì những kiến thức chia sẻ cho mọi người.

  • @toannguyenviet6910
    @toannguyenviet6910 3 ปีที่แล้ว +3

    một phút ngẫu hứng ôn lại kiến thức cơ bản, mọi kiến thức qua giọng nói của anh đều thật dễ hiểu :D cảm ơn anh Sơn !!!

    • @tungphunginh1296
      @tungphunginh1296 3 ปีที่แล้ว

      Anh trình bày quá rõ ràng, chứng tỏ kiến thức của anh quá chắc chắn 👏👏👏

  • @giahungnguyen5464
    @giahungnguyen5464 2 ปีที่แล้ว +1

    video duy nhất coi 1 lần hỉu ngay :v

  • @hanguyenquang4535
    @hanguyenquang4535 3 ปีที่แล้ว +3

    hay quá anh ơi, tuy không học cntt nhưng xem xong vẫn phải cảm ơn anh vì đã giúp em hiểu thêm nhiều vấn đề trong ngôn ngữ lập trình

  • @quanghiep9259
    @quanghiep9259 2 ปีที่แล้ว

    hay quá a Sơn ơiiiii. E học lập trình bao lâu nay mà bây h mới được a đả thông tư tưởng... Cảm ơn a rất nhiều

  • @Green-kj7wx
    @Green-kj7wx 3 ปีที่แล้ว +1

    Ngoài khả năng giảng dạy đỉnh cao của a Sơn ra, thì làm video ngoài đường này em xem tập trung thật sự luôn!

  • @Mina-ry9qi
    @Mina-ry9qi 3 ปีที่แล้ว

    Hay quá, ban đầu ko hiểu j nghe anh xong hiểu vấn đề luôn

  • @vinguyenvan6671
    @vinguyenvan6671 3 ปีที่แล้ว

    xem bài này em như khai sáng khi học lập trình, em cảm ơn anh sơn rất nhiều ạ

  • @MsHaTrang
    @MsHaTrang 3 ปีที่แล้ว +1

    Bài giảng rất hữu ích bác nhé

  • @ngocchienpham2325
    @ngocchienpham2325 3 ปีที่แล้ว

    quá hay luôn. Chúc F8 ngày càng thành công.

  • @angminhuc6674
    @angminhuc6674 3 ปีที่แล้ว +2

    Rất chi tiết ạ, cảm ơn anh rất nhiều ^^

  • @ducpham206
    @ducpham206 3 ปีที่แล้ว

    quá hay em ra đi làm rồi mới thấy nó cần thiết thế nào. thanks anh nhiều

  •  2 ปีที่แล้ว +1

    C++ vững con trỏ thì cái này rất chi là dễ

  • @hungmai5314
    @hungmai5314 3 ปีที่แล้ว +3

    Mong anh làm khóa học về react js ạ .Cảm ơn anh!

  • @pdh-group7325
    @pdh-group7325 3 ปีที่แล้ว

    bài giang rất hay . cảm ơn anh rất nhiều ạ

  • @duyang7309
    @duyang7309 3 ปีที่แล้ว +3

    0:35 ok a. Theo dõi video của a em thấy rất bổ ích :v

  • @tunghoangnguyen5742
    @tunghoangnguyen5742 3 ปีที่แล้ว

    Ref types theo em hiểu là giống alias và cơ chế gom rác tự động còn value types thì... e oke ạ!

  • @GooDog2906
    @GooDog2906 ปีที่แล้ว

    gần 100k sub rồi cố lên anh ơi .

  • @phungtatviet7054
    @phungtatviet7054 3 ปีที่แล้ว

    Video free mà bổ ích thì level max

  • @nghiahoang7978
    @nghiahoang7978 3 ปีที่แล้ว

    Quá hay và quá tâm huyết, cảm ơn anh và F8 ❤❤❤

  • @thanhcongvu4644
    @thanhcongvu4644 3 ปีที่แล้ว +1

    Một trong những người có tâm nhất trong ngành. Cảm ơn anh!

  • @datwilliama2
    @datwilliama2 3 ปีที่แล้ว

    cám ơn anh, nhờ anh mà em hiểu rõ về tham trị về tham chiếu :3

  • @leecode107
    @leecode107 3 ปีที่แล้ว

    anh oi em o ha noi. e mới học javascript khoảng 2 tháng rồi e muon gap a cực. bài rất có ích

  • @animess1343
    @animess1343 3 ปีที่แล้ว +1

    bài này khá rối não nhưng mà coi nhiều vẫn hiểu anh ơi kkk

  • @bleach2ify
    @bleach2ify 3 ปีที่แล้ว

    Yêu Hà Nội dã man ạ !!!!

  • @OrionChocoboy
    @OrionChocoboy 2 ปีที่แล้ว

    Cảm ơn bạn rất nhiều.

  • @tachinguyen4dev
    @tachinguyen4dev 3 ปีที่แล้ว

    Hay quá anh, cám ơn a đã chia sẻ

  • @nhattuan4443
    @nhattuan4443 3 ปีที่แล้ว

    hehe :v dạy lúc 4h học bài xong ngó qa thấy a Sơn up clip
    chào buổi sáng mọi người :D

  • @nhatnguyentruong9960
    @nhatnguyentruong9960 3 ปีที่แล้ว +1

    mong Anh ra thêm video về api. Nodejs

  • @tubui6639
    @tubui6639 3 ปีที่แล้ว

    hay và có tâm quá a ơi

  • @kienam5330
    @kienam5330 3 ปีที่แล้ว

    tuyệt vời quá anh Sơn em @Kiên Đàm đây

  • @hongta9509
    @hongta9509 2 ปีที่แล้ว +1

    Thật sự rất cảm ơn anh vì cách giải thích dễ hiểu với 1 kiến thức phức tạp ntn. Đang học phải pause lại để cảm ơn anh cái đã

  • @tuandang919
    @tuandang919 ปีที่แล้ว

    Hay quá anh ơi!

  • @thang8617
    @thang8617 10 หลายเดือนก่อน

    Xin phép đánh dấu ở đây phát. Khi nào ko nhớ sẽ lên đây tìm
    Tham trị: 4:50
    Tham chiếu: 8:44
    Cách tham số hoạt động: 19:54

  • @thanhmai1132
    @thanhmai1132 3 ปีที่แล้ว

    bai rat hay, cam on anh

  • @KhangLe-ec9vq
    @KhangLe-ec9vq 3 ปีที่แล้ว

    Cảm ơn anh rất nhiều

  • @nguyenxuantruong2867
    @nguyenxuantruong2867 ปีที่แล้ว +1

    Hay anh ơi

  • @VuNguyen-yj5wi
    @VuNguyen-yj5wi 3 ปีที่แล้ว

    Với kiểu values type thì khi nó gán biến b = a thì lúc đó nó k tạo ra 1 địa chỉ ô nhớ mới để gán biến b vào, mà nó sẽ gán địa chỉ ô nhớ a tới thằng b, sau khi a hoặc b đc gán giá trị mới thì lúc đó mới tạo 1 địa chỉ mới để lưu giá trị mới vào rồi gán địa chỉ đó cho thằng vừa đc gán. Trong js cả 2 kiểu đều so sánh bằng địa chỉ chứ k so sánh bằng giá trị trong địa chỉ.

  • @hungsonvu3118
    @hungsonvu3118 3 ปีที่แล้ว

    Mong anh giải thích về hướng đối tượng

  • @manhtranvan9659
    @manhtranvan9659 ปีที่แล้ว

    Mất 2 năm học js giờ xem lại mới hiểu hết bản chất 😂

  • @369ptg
    @369ptg 3 ปีที่แล้ว

    Cảm ơn a ạ

  • @shawnnguyen1379
    @shawnnguyen1379 2 ปีที่แล้ว +1

    Cái shalow copy {...obj} này, áp dụng cho obj nhiều tầng đc mà nhỉ anh?

  • @khoatran8503
    @khoatran8503 3 ปีที่แล้ว

    Thề bài này đẳng cấp vãi chưởng :))

  • @nguyenAudio77
    @nguyenAudio77 3 ปีที่แล้ว

    Em theo Js là ổn rùi anh nhỉ, java được đánh giá cao hơn chắc sau em cũng học cả java nữa ạ!

  • @duyanh6909
    @duyanh6909 3 ปีที่แล้ว

    bài hay quá anh

  •  3 ปีที่แล้ว

    Hay thật sự

  • @khanguyen7205
    @khanguyen7205 3 ปีที่แล้ว +1

    Good morning everyone.

  • @Pick-Challenge
    @Pick-Challenge 3 ปีที่แล้ว

    cám ơn anh, đang thắc mắc bài IIEF sao const có thể gán lại đc thì may vớ được video này

  • @HoaPham-rg8rm
    @HoaPham-rg8rm 3 ปีที่แล้ว

    Làm về debug javascript trên vs code đi anh, các extension, tool sắn trên vscode, mẹo, thự viện ....

  • @hha15623
    @hha15623 3 ปีที่แล้ว

    bản chất là con trỏ , ai học con trỏ bên c++ sẽ hiểu hơn bản chất của vấn đề này
    Thế mới nói học c++ khó là phần con trỏ , chinh phục được nó hầu như không sợ ngôn ngữ nào hết

  • @duyngq
    @duyngq 3 ปีที่แล้ว

    Hello a ơi, mong a ra thêm video về nodejs ạ

  • @DuyTran-ss4lu
    @DuyTran-ss4lu 2 ปีที่แล้ว

    Hay quá

  • @hieptrinh8215
    @hieptrinh8215 3 ปีที่แล้ว

    hay quá ạ!

  • @GooDog2906
    @GooDog2906 ปีที่แล้ว

    24/2/2023: Hiện đang là sinh viên năm 2. Và em mong muốn hết năm 3 em có thể đi thực tập Frontend . Fighting

  • @longthanhvu8415
    @longthanhvu8415 3 ปีที่แล้ว

    Anh ơi làm video hướng dẫn sử dụng github và laravel đi anh

  • @hatanphat9174
    @hatanphat9174 3 ปีที่แล้ว +1

    You're my idol !!

  • @dangduylinh9587
    @dangduylinh9587 3 ปีที่แล้ว

    quay ngoài bờ hồ à a zai :v đc quá

  • @hoangtri9569
    @hoangtri9569 3 ปีที่แล้ว

    muốn tạo ra object mới thì nên tìm hiểu factory function anh nhỉ?

  • @manhbuivan6278
    @manhbuivan6278 3 ปีที่แล้ว

    anh quay cảnh xung quanh thật quá đáng :vvvv

  • @hoangtruong5663
    @hoangtruong5663 ปีที่แล้ว

    yêu anh

  • @cuocsongquanhta5398
    @cuocsongquanhta5398 3 ปีที่แล้ว

    Intro xinh quá

  • @hoainamthai3391
    @hoainamthai3391 3 ปีที่แล้ว

    Anh ơi có những bài khó anh nên mở cái xem bình luận trước để mn còn tham khảo hướng làm ạ

    • @F8VNOfficial
      @F8VNOfficial  3 ปีที่แล้ว

      Mở cái xem bình luận ở đâu em ơi

    • @hoainamthai3391
      @hoainamthai3391 3 ปีที่แล้ว

      Ở phần bài tập sau mỗi video ấy anh , cứ phải nộp bài mới dc xem bình luận ấy ạ

  • @tandang7191
    @tandang7191 3 ปีที่แล้ว

    Anh Sơn cho em hỏi.
    Cái thằng tạo ra biến ngầm trong function sẽ đc khai báo với từ khóa gì ạ? var, let hay const ạ

  • @2kvlogs785
    @2kvlogs785 3 ปีที่แล้ว

    Truyền tham trị thì biến bên ngoài không thay đổi còn truyền tham chiếu (arr,obj) thì biến bên ngoài sẽ bị thay đổi

  • @MinhPham-ss7qm
    @MinhPham-ss7qm 3 ปีที่แล้ว

    anh ơi ra thêm bài giảng về nodejs đi ạ

  • @vinhlam8887
    @vinhlam8887 3 ปีที่แล้ว +2

    Đó là lí do vì sao nên học C và C++ trước :v. Mong anh có thêm video về OOP phần này em vẫn chưa hiểu sâu bản chất lắm

    • @kevinshoang
      @kevinshoang 3 ปีที่แล้ว

      OOP trong JS la prototype base, trong khi cac ngon ngu khac la class based.

    • @james-rx8kw
      @james-rx8kw 3 ปีที่แล้ว

      @@kevinshoang là sao ạ anh có thể giải thích thêm được ko ạ

    •  3 ปีที่แล้ว

      Học C++ trước lại càng lú khi học Javascript thì có. JS hoạt động khác C++ nhiều, như vấn đề này thì C++ có PASS BY REFERENCE nhưng JS thì không có, JS chỉ có PASS A REFERENCE. Mới học C++ mà qua JS thì sẽ hiểu sai nhiều thứ tưởng chừng là giống nhau lắm

    • @vancongang3092
      @vancongang3092 2 ปีที่แล้ว

      M học xong Java sang js là một chuyện khác :))

    • @yughiole7088
      @yughiole7088 10 หลายเดือนก่อน

      @ chuẩn, học vật vã khi chuyển từ c/c++ sang js

  • @tranlongvu6017
    @tranlongvu6017 3 ปีที่แล้ว

    cameramen của a sơn đỉnh quá =))))

  • @truongcongminh7079
    @truongcongminh7079 3 ปีที่แล้ว

    Hay quá anh ơi

  • @thevietphung6967
    @thevietphung6967 3 ปีที่แล้ว

    0:35 không vết muỗi đốt luôn :))

  • @yughiole7088
    @yughiole7088 ปีที่แล้ว

    Học con trỏ c++ đi mới bt độ hại não của Primitive Types & Reference Types trong js chỉ bthuong hh!! :)

  • @huutu289
    @huutu289 3 ปีที่แล้ว

    có khóa js nâng cao chưa Anh? hóng quá........

  • @phuongnamnguyen5226
    @phuongnamnguyen5226 8 หลายเดือนก่อน

    Ai học kỹ về C thì học mấy khái niệm này sẽ dễ thở hơn :"3

  • @LoiMomLong
    @LoiMomLong 3 ปีที่แล้ว

    Anh ơi , anh có thể làm về khóa vuejs kết hợp với nodejs được không ạ .Em cảm ơn ạ

  • @minhoannguyen8543
    @minhoannguyen8543 3 ปีที่แล้ว

    anh ơi hướng dẫn this trong class của JS được không ạ ?

  • @oanngo8540
    @oanngo8540 3 ปีที่แล้ว

    A sơn làm vc sớm quá

  • @winterburn3010
    @winterburn3010 2 ปีที่แล้ว

    Cứ tưởng đang đang xem kênh ông Tuấn Anh Magician =))

  • @doremon7334
    @doremon7334 3 ปีที่แล้ว

    cho e hỏi a dạy off ở đâu ạ e mong được tham gia

  • @mybuddy11
    @mybuddy11 3 ปีที่แล้ว

    tiếc là JS ko có cách nào in ra địa chỉ của biến để hiểu bản chất hơn

  • @thelaststanding97
    @thelaststanding97 3 ปีที่แล้ว

    RESPECTTT!!!!

  • @duongduong546
    @duongduong546 3 ปีที่แล้ว

    em muon hoi anh vai thu ma khong biet nhan voi anh bang cach nao

  • @inhsyduyetkenh5730
    @inhsyduyetkenh5730 3 ปีที่แล้ว

    Love🤩🤩🤩🤩🤩

  • @nghiatran9691
    @nghiatran9691 3 ปีที่แล้ว +1

    chào buổi sáng cả nhà >.

  • @cuongnguyen2574
    @cuongnguyen2574 3 ปีที่แล้ว

    Được vãi :3

  • @truonggiangvo21
    @truonggiangvo21 2 ปีที่แล้ว

    Cái này có phải khái niệm con trỏ k ạ ?

  • @vunguyenhuy3688
    @vunguyenhuy3688 2 ปีที่แล้ว

    sao nó giống con trỏ c++ mà anh dạy dễ hiểu hơn nhiều quá

  • @TuanAnh-zj6ug
    @TuanAnh-zj6ug 3 ปีที่แล้ว

    Anh Sơn cho em hỏi thế mik truyền callback vào làm tham số function thì cũng tương tự việc viết function xong gán biến vào cho callback ạ mong anh giải đáp ạ

    • @F8VNOfficial
      @F8VNOfficial  3 ปีที่แล้ว

      Đúng rồi em nhé. Ý là khi mình truyền đối số thì tham số trong hàm nhận được tương tự như việc sử dụng phép gán em. Không phân biệt nó là giá trị gì (function cũng là 1 kiểu dữ liệu trong JS, bản chất nó là Object). Callback thì nó là cách em dùng hàm, nên không cần nhắc tới callback ở đây e nhé.

    • @TuanAnh-zj6ug
      @TuanAnh-zj6ug 3 ปีที่แล้ว

      @@F8VNOfficial e cảm ơn anh nhiều ạ ❤️❤️

  • @nghiangoquang
    @nghiangoquang 2 ปีที่แล้ว

    Anh ơi, khi clone 1 object bằng Object.assign(target, source) thì cho dù source có nhiều phân cấp object con bên trong nó cũng đc clone ra vùng nhớ mới phải không anh?

    • @nghiangoquang
      @nghiangoquang 2 ปีที่แล้ว +1

      E test thử rồi, cách trên hoạt động như spread, chỉ clone 1 cấp của object, còn nested object nó chỉ reference thôi :)

  • @ManhTran-mi6dj
    @ManhTran-mi6dj 3 ปีที่แล้ว

    Tất cả các kiểu dữ liệu JS trừ undefined đều là object .

  • @vanhthanthien9120
    @vanhthanthien9120 3 ปีที่แล้ว +1

    Clip 3 bạn đâu anh :))

  • @petslover4306
    @petslover4306 2 ปีที่แล้ว

    Thầy dậy cực hay và dễ hiểu .

  • @AnhTuan-xy6hy
    @AnhTuan-xy6hy 3 ปีที่แล้ว

    Chào buổi sáng mọi người =)

  • @baobaostore
    @baobaostore 3 ปีที่แล้ว

    cái này nó đều đúng với mọi ngôn ngữ chứ không phải mỗi javascript phải không anh, vì vấn đề này thuộc về cấu trúc dữ liệu ?

    • @vumilano4725
      @vumilano4725 3 ปีที่แล้ว

      đúng bạn ag, tham chiếu tham trị ngôn ngữ nào cũng có.