Tôi đang sử dụng JavaScript và tôi tạo biến toàn cục. Tôi định nghĩa nó bên ngoài một hàm và tôi muốn thay đổi giá trị biến toàn cầu từ bên trong một hàm và sử dụng nó từ một hàm khác, làm cách nào để làm điều này?Làm cách nào để thay đổi giá trị của biến toàn cục bên trong một hàm
Trả lời
Chỉ cần tham khảo các biến bên trong hàm; không có phép thuật, chỉ cần sử dụng tên của nó. Nếu nó được tạo ra trên toàn cầu, thì bạn sẽ cập nhật biến toàn cục.
Bạn có thể ghi đè hành vi này bằng cách khai báo cục bộ bằng cách sử dụng var
, nhưng nếu bạn không sử dụng var
, thì tên biến được sử dụng trong một hàm sẽ là toàn cầu nếu biến đó đã được khai báo trên toàn cầu.
Đó là lý do tại sao được coi là phương pháp hay nhất để luôn khai báo biến của bạn một cách rõ ràng với var
. Bởi vì nếu bạn quên nó, bạn có thể bắt đầu lộn xộn với globals do tai nạn. Đó là một sai lầm dễ dàng để thực hiện. Nhưng trong trường hợp của bạn, điều này quay lại và trở thành một câu trả lời dễ dàng cho câu hỏi của bạn.
var a = 10;
myFunction();
function myFunction(){
a = 20;
}
alert("Value of 'a' outside the function " + a); //outputs 20
cảm ơn ví dụ đơn giản tuyệt vời này. Logic của điều này đã được thực hiện trong đầu của tôi. Chỉ cần làm quen với tư duy 4d. – Mikey3Strings
Chỉ cần sử dụng tên của biến đó.
Trong JavaScript, biến chỉ là cục bộ cho hàm, nếu chúng là tham số của hàm hoặc nếu bạn khai báo chúng một cách rõ ràng bằng cách gõ từ khóa var
trước tên của biến.
Nếu tên của giá trị cục bộ có tên tương tự như các giá trị toàn cầu, sử dụng đối tượng window
Xem này jsfiddle
x = 1;
y = 2;
function a(y) {
// y is local to the function, because it is a function parameter
alert(y); // 10
y = 3; // will only overwrite local y, not 'global' y
var x; // makes x a local variable
x = 4; // only overwrites local x
alert(y); // 3
alert(x); // 4
// global value could be accessed by referencing through window object
alert(window.y) // 2 global y
}
a(10);
alert(x); // 1; this is the global value
alert(y); // 2; global as well
+1 để mô tả va chạm tên giữa biến toàn cầu và biến cục bộ được khai báo và cách truy cập nó. – gdbj
<script>
var x = 2; //X is global and value is 2.
function myFunction()
{
x = 7; //x is local variable and value is 7.
}
myFunction();
alert(x); //x is gobal variable and the value is 7
</script>
Chỉ cần không sử dụng từ khóa 'var' bên trong hàm, sau đó bạn không phải đối phó với' document.getElementById ("outside"). Value = x; ' –
- 1. Sửa đổi một biến toàn cục bên trong một hàm
- 2. Thay đổi biến toàn cục bên trong đóng cửa Javascript
- 3. thay đổi giá trị của các phần tử mảng từ bên trong một hàm
- 4. Truyền biến số toàn cục sang hàm
- 5. Javascript gán giá trị trả về của hàm Gọi lại cho biến toàn cục
- 6. Làm cách nào để thực thi mã khi giá trị của biến thay đổi trong C#?
- 7. Sửa đổi đối số 'được truyền bởi giá trị' bên trong hàm và sử dụng chúng làm biến cục bộ
- 8. Thay đổi giá trị boolean trong hàm lớp trong java
- 9. Đệ quy tìm kiếm một giá trị trong biến toàn cục và thuộc tính của nó
- 10. Làm cách nào để chuyển một biến theo giá trị sang một hàm javascript ẩn danh?
- 11. Thay đổi biến toàn cầu từ bên trong một hàm PHP
- 12. thay đổi giá trị của biến const trong C++
- 13. Làm cách nào để thay đổi bố cục của ứng dụng Gtk trên toàn màn hình?
- 14. Làm cách nào để thay đổi Giá trị TextView bên trong Mã Java?
- 15. jQuery/Javascript: Xác định biến toàn cục trong một hàm?
- 16. Làm cách nào để thay đổi giá trị của giá trị Cài đặt.settings
- 17. Làm cách nào để thay đổi giá trị Hash?
- 18. Làm cách nào để thay đổi giá trị biến tĩnh trong PHP?
- 19. biến cục bộ bên ngoài cho những biến toàn cục bên trong namespace
- 20. Làm cách nào để đặt một giá trị biến đổi trong khi để lại các giá trị khác?
- 21. Ruby: Làm thế nào để thay đổi giá trị của một tham số trong một cuộc gọi hàm?
- 22. Làm cách nào để thay đổi một giá trị trong Registry của Window?
- 23. Biến toàn cục trong R
- 24. Làm cách nào để thay đổi giá trị của biến trong khi gỡ lỗi mã Java trong NetBeans 7.1?
- 25. Làm cách nào để bỏ qua một số giá trị trả về của một hàm MATLAB?
- 26. Cách tạo biến toàn cục trong Erlang
- 27. Làm cách nào để thay đổi giá trị của khóa ngoài trong postgresql?
- 28. Truy cập PHP biến toàn cục trong hàm
- 29. Thay đổi giá trị bên trong vòng lặp foreach không thay đổi giá trị trong mảng được lặp qua
- 30. Chuyển đổi một cách an toàn giá trị trong bản đồ có thể thay đổi
này không làm việc cho tôi: country = 'foo' $ .ajax ({ url: '/ some-thiết bị đầu cuối, thành công: function (data) { country = data.country; } }); console.log (quốc gia) // output 'foo' –
@MarkSimpson - lý do nó không hoạt động vì trong ví dụ của bạn, 'console.log' được chạy ngay lập tức, nhưng hàm thành công ajax chỉ chạy tại một số điểm sau đó khi cuộc gọi ajax thực sự trả về một phản hồi. Đây là một điểm cơ bản về bản chất không đồng bộ của ajax: mã trong các hàm đóng không chạy theo thứ tự với mã xung quanh nó. Đây là một điều quan trọng để nắm bắt khi tìm hiểu về mã hướng sự kiện. – Spudley
Cảm ơn bạn đã giải thích, @Spudley –