Tôi đang học các biến toàn cục và biến cục bộ của JS, nhưng tôi bị nhầm lẫn về hàm cụ thể này.Biến cục bộ và toàn cầu bên trong hàm Javascript
var text = "top";
function print() {
return (text);
}
print();
//returns 'top'
Tôi hiểu tại sao nó trả về hàng đầu. var text
là biến toàn cục. Chức năng print()
có quyền truy cập vào nó và trả về text
, do đó trả về 'top'
.
var text = "top";
function print() {
return (text);
var text = "bottom";
}
print();
// returns undefined
Tôi có kiến thức cơ bản về biến toàn cầu và cục bộ (hoặc vì vậy tôi nghĩ). Tôi biết rằng hàm print
có quyền truy cập vào các biến cục bộ cộng với toàn cục của nó.
Tôi không hiểu tại sao điều này trả về undefined
. Theo hiểu biết của tôi, dòng return text;
truy lục biến toàn cầu text
mà nó có quyền truy cập (như được hiển thị trên khối mã đầu tiên). Sau khi trở về text = 'top'
, nó cũng khai báo biến địa phương của riêng nó có cùng tên nhưng giá trị khác nhau, 'bottom'
. Biến cục bộ bottom
, theo hiểu biết của tôi, nên ngồi ở đó vì nó không được gọi trước đó.
Tại sao nó không hiển thị top
(hoặc thậm chí hiển thị bottom
) nhưng thay vào đó hiển thị undefined
?
số Trong trường hợp thứ hai, nó sẽ trả về các văn bản biến cục bộ , được * khai báo * bên trong hàm. (Đó là những gì làm cho nó địa phương.) Nhưng tại thời điểm sự trở lại được thực thi, biến chưa được gán một giá trị nào. –
Tra cứu "cẩu nâng" trong JavaScript. –