Chào mọi người em có đang ngồi nghịch lấy dữ liệu sách tiki qua api thì em đang chưa hiểu về cái biến toàn cục trong js lắm.Em có tạo một cái object là book với các thuộc tính khởi tạo là rỗng.Em dùng thằng request để lấy dữ liệu sách từ api, bên trong cái thằng request này thì em có gắn từng thuộc tính của thằng book với các dữ liệu từ api trả về.Khi em console.log cả cái object book kia trong cái hàm request thì nó in ra đúng dữ liệu mà em đã gán nhưng mà khi em console.log thằng book này ở bên ngoài cái hàm request thì dữ liệu in ra là rỗng hết ý như lúc khởi tạo.Cho em hỏi là tại sao em khai báo object book toàn cục thì khi trong hàm mình set dữ liệu các thuộc tính cho nó thì lúc ra khỏi hàm dữ liệu của nó sẽ thay đổi chứ sao lúc ra khỏi hàm mà dữ liệu của nó lại mất hết vậy ạ.Em cảm ơn ạ.
Thắc mắc về biến toàn cục trong javascript?
cái này chả liên quan gì đến biến local hay global cả. Cái bạn nên tìm hiểu thêm ở đây là Promise hay Async/Await của JS.
bạn nên tìm đọc thêm, còn ở đây mình chỉ giải thích đại khái như này.
javascript hoạt động single thread vì thế lúc lập trình có những tác vụ hoặc function cần nhiều thời gian để hoàn thành, thì người ta thường làm cho những cái function khác chạy trong lúc chờ cái function kia hoàn thành. (đọc thêm về hệ điều hành thì sẽ biết thêm cách người ta làm)
Ví dụ
console.log(1)
//ví dụ promise ở đây
axios.get().then(console.log(2))
console.log(3)
thì output mà bạn sẽ nhận dc là
1
3
2
vì thế lúc bạn log cái book của bạn ra là lúc mà cái promise của bạn chưa hoàn thành, nên book lúc đấy vẫn là lúc mà bạn khởi tạo
mình cũng ko biết nên giải thích như nào nên bạn tốt nhất đọc thêm về cái mình nói Promise, Async Await (js6)
Oke cảm ơn bạn nha mình cũng khá hiểu ra vấn đề rồi.