THẢO LUẬN

Cảm ơn bạn, mình đã update lại.

0
thg 4 4, 2023 7:04 SA

image.png link ở đây bị mất rồi bạn ah. Bạn edit lại link đc k

0
Avatar
đã bình luận cho bài viết
thg 4 4, 2023 6:48 SA

thank

+1

sao hàm foo trả về undefined mà hàm baz không trả về nhỉ? bản chất 2 hàm này giống nhau mà

+1
thg 4 4, 2023 4:35 SA

Mình chưa hiểu câu hỏi lắm. Bạn đang cần build website hay mở file html? Nếu bạn đang cần mở file html từ tool pycharm thì right click vào file-> Chọn Open In-> Browser -> trình duyệt muốn mở. image.png

0
thg 4 4, 2023 1:05 SA

thanks

0
thg 4 4, 2023 1:05 SA

thanks

0

Chào Hà, mình xin trả lời thắc mắc của bạn như sau:

Câu hỏi 1. Có lưu ý gì để đổi từ kỹ thuật 1 sang kỹ thuật 2/3 không?

Nếu bạn muốn chuyển 1 hàm đã được viết từ trước bằng kỹ thuật 1 sang kỹ thuật 2, 3 thì hiện tại mình chưa có ý tưởng gì tuyệt vời cho bạn. Nếu chuyển kỹ thuật bạn phải refactor lại tất cả các chỗ đang gọi hàm.

Câu hỏi 2. Nên gom nhóm thế nào cho hợp lý hay tất cả trường hợp đều nên dùng kỹ thuật 3?

Mục đích mình viết bài này nhằm khuyến khích mọi người sử dụng kỹ thuật số 3. Tuy nhiên, để best practice nhất, theo mình thì nếu hàm của bạn có ít tham số (từ 3 tham số trở xuống) và bạn chắc chắn rằng các tham số trong hàm đó của bạn là không thay đổi về sau thì bạn nên sử dụng kỹ thuật số 1. Nếu hàm của bạn có từ 4 tham số trở lên hoặc bạn không thể chắc chắn rằng các tham số trong hàm của mình sẽ không đổi trong tương lai thì bạn nên sử dụng kỹ thuật số 3. Còn kỹ thuật số 2 bạn nên sử dụng với Typescript tạo Interface để tận dụng được tối đa sức mạnh của kỹ thuật này.

Câu hỏi 3. Câu hỏi này của bạn rất hay, bạn nói đúng, bạn có thể kết hợp các kỹ thuật này với nhau, trong 1 hàm những required params thì sử dụng kỹ thuật 1, những optional params thì sử dụng kỹ thuật 3. Tuy nhiên, nếu hàm của bạn có quá nhiều required params, kèm thêm cả optional params thì bạn có thể kết hợp bằng cách tạo 2 tham số object trong hàm, 1 object cho required params, 1 object cho optional params. Ví dụ: hàm printPerson của mình có 2 trường name + age là required, còn address + birthday là optional, mình có thể làm như sau:

function printPerson({name, age}, {address = "HN", birthday}) { console.log(Name: ${name}, Address: ${address}, Age: ${age}, Birthday: ${birthday}); }

printPerson({name: "pdthien", age: 24}, {birthday: "01/01/1999"})

Cảm ơn Hà!

0

có package nào cài phát là có nguyên 1 web bán hàng không chủ thread

0
Avatar
đã bình luận cho bài viết
thg 4 3, 2023 12:30 CH

cảm ơn bạn bài viết khá chi tiết

0
thg 4 3, 2023 11:27 SA

This is an important topic, thanks for bringing attention to it.

+1
thg 4 3, 2023 11:26 SA

I love how you explained this, it's so clear and easy to understand.

+1
thg 4 3, 2023 11:24 SA

Hi there, Can you write an article about XSS? Thanks

+1

Em có một góp ý nho nhỏ ở phần Basic Authen là credentials được encode (base64) chứ không phải encrypt ạ.

0

bạn hãy thử đưa đáp án của bạn trước đi!

0
thg 4 3, 2023 7:59 SA

mình dùng libs này có issue với việc nếu 1 row của table có thể expand 2 row child

0

Chào bạn, cám ơn bạn đã chia sẻ.

Mình có 1 chút thắc mắc thế này:

  • Có lưu ý gì để đổi từ kỹ thuật 1 sang kỹ thuật 2/3 không?
  • Nên gom nhóm thế nào cho hợp lý hay tất cả trường hợp đều nên dùng kỹ thuật 3?
  • Mình đã dùng cả 3 cách bạn nêu và cá nhân mình thấy có 1 số trường hợp mình thích kết hợp cách 1 với 2/3. Những required params thì để dạng 1, những optional params thì để dạng 3. Không biết như này có phải cách tốt không nhỉ?
0

theo như bạn nói thì khi MySQL sử dụng B-tree index, nó sẽ cấu trúc dữ liệu theo dạng cây và tìm kiếm nhị phân kết quả, vậy tại sao các ví dụ của bạn kết quả luôn ra trùng với số row tìm kiếm, cái này chỉ là ngẫu nhiên trùng thôi hay nó sẽ luôn trùng vậy

0
thg 4 3, 2023 4:07 SA

tks

0

Bài viết hay nói rõ về bản chất Coroutines Có rất ít bài viết nói rõ về coroutine như vậy

0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí