Khai báo biến, Scope, var

const doTest = () => {
  var varGlobal = "9999";
  return varGlobal;
};
varGlobal = "99999";
const varStr = varGlobal.toString();
console.log(varGlobal);

Ai giải thích em đoạn code này với ạ. Kết quả là 99999 ạ

Kết quả 99999 là ổn rồi đấy, vì đoạn function doTest() không có ý nghĩa gì nhé, khi bạn khai báo var varGlobal = “9999” bên trong nó thì nó chỉ là biến cục bộ, không ảnh hường gì hòa bình thế giới.

Có thể được viết lại:

Khi xuất ra màn hình thì một số 99999 so với một chuỗi “99999” không khác gì nhau cho dù người có mắt tốt 20/10 hoặc 6/10 đều không thấy có gì khác nhau.

Cần đọc lý thuyết kỹ hơn, cụ thể ở đây là: variable scope, hoisting làm trên bảng viết nhiều hơn để hiểu bản chất của vấn đề.

6 Likes

Dạ em cảm ơn. Vậy là cái dòng varGlobal = “99999”; nó tạo một biến varGlobal không cần từ khoá khai báo var, let, const ạ

2 Likes

Ừh, đọc lý thuyết JS có đoạn: The variables declared without the var keyword becomes global variables

5 Likes

Vâng em hiểu rồi ạ. Tài liệu JS nào vậy ạ. Em có thể xin link được không? Em cảm ơn.

Có nhiều trang để xem, bạn có thể tra cứu các link trên Wikipedia khi đọc về lịch sử JavaScript để có nguồn tốt. Còn cần ngay 1 link ổn, đọc cái này https://developer.mozilla.org/en-US/docs/Web/JavaScript

6 Likes

Dạ cho em hỏi đoạn code trên nó có hiện tượng hosting chỗ nào vậy ạ?

1 Like

Đọc về hoisting thôi chứ đoạn code trên không phải :3

Hoisting, không phải hosting nhé bạn.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?