34
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Đây là phiên bản đơn giản hóa của những gì tôi đang cố gắng thực hiện, nhưng tôi muốn vượt qua một biến bên ngoài phạm vi của hàm. Tôi đang khai báo biến bên ngoài chức năng nhưng không thể có được nó.
HTML:
5
6
7
JS:
$[document].ready[function [] {
var gsd = "";
$["p"].each[function [] {
if [$[this].text[] === "5"] {
var gsd = $[this].text[];
alert[gsd]; // this works
}
}]
alert["get var outside func" + gsd]; //does not work
}];
Felix Kling
771K172 Huy hiệu vàng1069 Huy hiệu bạc1116 Huy hiệu Đồng172 gold badges1069 silver badges1116 bronze badges
Đã hỏi ngày 5 tháng 6 năm 2013 lúc 14:02Jun 5, 2013 at 14:02
1
Bạn đã tái lập gsd
như một biến mới bên trong chức năng của bạn. Hủy bỏ var
ở phía trước gsd
bên trong hàm để giải quyết gsd
trong phạm vi bên ngoài.
Đã trả lời ngày 5 tháng 6 năm 2013 lúc 14:12Jun 5, 2013 at 14:12
IgorigorIgor
15.7K1 Huy hiệu vàng25 Huy hiệu bạc 30 Huy hiệu Đồng1 gold badge25 silver badges30 bronze badges
3
Phạm vi trong JavaScript xác định khả năng truy cập của các biến, đối tượng và chức năng.
Có hai loại phạm vi trong JavaScript.
- Phạm vi toàn cầu
- Phạm vi địa phương
Phạm vi toàn cầu
Các biến được khai báo bên ngoài bất kỳ chức năng nào trở thành biến toàn cầu. Các biến toàn cầu có thể được truy cập và sửa đổi từ bất kỳ chức năng nào.
var userName = "Bill";
function modifyUserName[] {
userName = "Steve";
};
function showUserName[] {
alert[userName];
};
alert[userName]; // display Bill
modifyUserName[];
showUserName[];// display Steve
Trong ví dụ trên, tên người dùng biến trở thành biến toàn cầu vì nó được khai báo bên ngoài bất kỳ chức năng nào. Hàm modifyUserName [] sửa đổi tên người dùng là tên người dùng là biến toàn cầu và có thể được truy cập bên trong bất kỳ chức năng nào. Theo cách tương tự, hàm showUserName [] hiển thị giá trị hiện tại của biến tên người dùng. Thay đổi giá trị của biến toàn cầu trong bất kỳ chức năng nào sẽ phản ánh trong suốt chương trình.
Xin lưu ý rằng các biến được khai báo bên trong một hàm không có từ khóa VAR cũng trở thành biến toàn cầu.var keyword also become global variables.
function createUserName[] {
userName = "Bill";
}
function modifyUserName[] {
if[userName]
userName = "Steve";
};
function showUserName[] {
alert[userName];
}
createUserName[];
showUserName[]; // Bill
modifyUserName[];
showUserName[]; // Steve
Trong ví dụ trên, tên người dùng biến được khai báo mà không có từ khóa var bên trong createUserName [], do đó, nó trở thành biến toàn cầu tự động sau khi gọi createdUserName [] lần đầu tiên.var keyword inside createUserName[], so it becomes global variable automatically after calling createUserName[] for the first time.
Một biến tên người dùng sẽ chỉ trở thành biến toàn cầu sau khi createUserName [] được gọi ít nhất một lần. Gọi showusername [] trước createUserName [] sẽ ném một ngoại lệ "Tên người dùng không được xác định".
Phạm vi địa phương
Các biến được khai báo bên trong bất kỳ chức năng nào với từ khóa VAR được gọi là biến cục bộ. Các biến cục bộ không thể được truy cập hoặc sửa đổi bên ngoài khai báo chức năng.var keyword are called local variables. Local variables cannot be accessed or modified outside the function declaration.
function createUserName[] {
var userName = "Bill";
}
function showUserName[] {
alert[userName];
}
createUserName[];
showUserName[]; // throws error: userName is not defined
Trong ví dụ trên, tên người dùng là hàm cục bộ để createUserName [] hàm. Nó không thể được truy cập trong hàm showuserName [] hoặc bất kỳ hàm nào khác. Nó sẽ gây ra một lỗi nếu bạn cố gắng truy cập một biến không nằm trong phạm vi địa phương hoặc toàn cầu. Sử dụng thử Catch Block để xử lý ngoại lệ.
Một số lời khuyên..
Nếu biến cục bộ và biến toàn cầu có cùng tên thì việc thay đổi giá trị của một biến không ảnh hưởng đến giá trị của biến khác.
var userName = "Bill";
function ShowUserName[]
{
var userName = "Steve";
alert[userName]; // "Steve"
}
ShowUserName[];
alert[userName]; // Bill
JavaScript không cho phép phạm vi cấp khối bên trong {}. Ví dụ: các biến được xác định trong khối nếu khối có thể được truy cập bên ngoài nếu khối, bên trong một hàm.
Function NoBlockLevelScope[]{
if [1 > 0]
{
var myVar = 22;
}
alert[myVar];
}
NoBlockLevelScope[];
- JavaScript có phạm vi toàn cầu và phạm vi địa phương.
- Các biến được khai báo và khởi tạo bên ngoài bất kỳ chức năng nào trở thành biến toàn cầu.
- Các biến được khai báo và khởi tạo chức năng bên trong trở thành các biến cục bộ cho hàm đó.
- Các biến được khai báo mà không có từ khóa VAR bên trong bất kỳ chức năng nào tự động trở thành các biến toàn cầu.var keyword inside any function becomes global variables automatically.
- Các biến toàn cầu có thể được truy cập và sửa đổi ở bất cứ đâu trong chương trình.
- Các biến cục bộ không thể được truy cập bên ngoài khai báo chức năng.
- Biến toàn cầu và biến cục bộ có thể có cùng tên mà không ảnh hưởng đến nhau.
- JavaScript không cho phép phạm vi cấp khối bên trong khung {}.
Bạn muốn kiểm tra xem bạn biết JavaScript bao nhiêu?