Tôi hiểu ý tưởng rằng biến cục bộ độc lập với biến toàn cục và cả hai biến này có thể tồn tại trong cùng một chương trình mà không can thiệp. Câu hỏi của tôi là, nếu tôi muốn sử dụng một hàm để thay đổi biến toàn cục thì sao?
Các biến được tạo bên ngoài hàm [như trong tất cả các ví dụ ở trên] được gọi là biến toàn cục
Mọi người đều có thể sử dụng biến toàn cục, cả bên trong và bên ngoài hàm
Thí dụ
Tạo một biến bên ngoài một hàm và sử dụng nó bên trong hàm
x = "tuyệt vời"
def myfunc[].
print["Python la " + x]
myfunc[]
Tự mình thử »Nếu bạn tạo một biến có cùng tên bên trong một hàm, biến này sẽ là cục bộ và chỉ có thể được sử dụng bên trong hàm. Biến toàn cục có cùng tên sẽ vẫn như cũ, toàn cầu và với giá trị ban đầu
Thí dụ
Tạo một biến bên trong một hàm, có cùng tên với biến toàn cục
x = "tuyệt vời"
def myfunc[].
x = "tuyệt vời"
print["Python la " + x]
myfunc[]
print["Trăn là " + x]
Tự mình thử »Từ khóa toàn cầu
Thông thường, khi bạn tạo một biến bên trong một hàm, biến đó là cục bộ và chỉ có thể được sử dụng bên trong hàm đó
Để tạo một biến toàn cục bên trong một hàm, bạn có thể sử dụng từ khóa global
Thí dụ
Nếu bạn sử dụng từ khóa global
thì biến thuộc phạm vi toàn cục
def myfunc[].
toàn cầu x
x = "tuyệt vời"
myfunc[]
print["Trăn là " + x]
Tự mình thử »Ngoài ra, hãy sử dụng từ khóa global
nếu bạn muốn thay đổi một biến toàn cục bên trong một hàm
Thí dụ
Để thay đổi giá trị của một biến toàn cục bên trong một hàm, hãy tham chiếu đến biến đó bằng cách sử dụng từ khóa global
Các đối tượng này có sẵn trong tất cả các mô-đun. Các biến sau đây có vẻ là toàn cầu nhưng không. Chúng chỉ tồn tại trong phạm vi mô-đun, xem tài liệu hệ thống mô-đun
Các đối tượng được liệt kê ở đây là dành riêng cho Node. js. Có các đối tượng tích hợp là một phần của chính ngôn ngữ JavaScript, cũng có thể truy cập được trên toàn cầu
Lớp. AbortController
#
Lịch sửPhiên bảnThay đổiv15. 4. 0
Không còn thử nghiệm
v15. 0. 0, v14. 17. 0Đã thêm vào. v15. 0. 0, v14. 17. 0
Một lớp tiện ích được sử dụng để báo hiệu việc hủy bỏ trong các API dựa trên Promise
đã chọn. API dựa trên API Web AbortController
abortController.abort[[reason]]
#
Lịch sửPhiên bảnThay đổiv17. 2. 0, v16. 14. 0
Đã thêm đối số lý do tùy chọn mới
v15. 0. 0, v14. 17. 0Đã thêm vào. v15. 0. 0, v14. 17. 0
reason
Một lý do tùy chọn, có thể truy xuất trên tài sảnreason
củaAbortSignal
Kích hoạt tín hiệu hủy bỏ, khiến global
1 phát ra sự kiện global
2
global
1#
Đã thêm vào. v15. 0. 0, v14. 17. 0
Lớp. AbortSignal
#
Đã thêm vào. v15. 0. 0, v14. 17. 0
AbortSignal
được sử dụng để thông báo cho người quan sát khi phương thức Promise
2 được gọi
Promise
3#Lịch sửPhiên bảnThay đổiv17. 2. 0, v16. 14. 0
Đã thêm đối số lý do tùy chọn mới
v15. 12. 0, v14. 17. 0Đã thêm vào. v15. 12. 0, v14. 17. 0
Trả về một AbortSignal
mới đã bị hủy bỏ
Promise
5Đã thêm vào. v17. 3. 0, v16. 14. 0
Promise
6 Số mili giây phải đợi trước khi kích hoạt AbortSignal
Trả về một AbortSignal
mới sẽ bị hủy bỏ sau Promise
6 mili giây
global
2#Đã thêm vào. v15. 0. 0, v14. 17. 0
Sự kiện global
2 được phát ra khi phương thức Promise
2 được gọi. Cuộc gọi lại được gọi với một đối số đối tượng duy nhất với một thuộc tính AbortController
2 duy nhất được đặt thành global
2
AbortController
mà AbortSignal
được liên kết sẽ chỉ kích hoạt sự kiện global
2 một lần. Chúng tôi khuyến nghị mã đó kiểm tra xem thuộc tính AbortController
7 có phải là AbortController
8 hay không trước khi thêm trình xử lý sự kiện global
2
Bất kỳ trình xử lý sự kiện nào được đính kèm với AbortSignal
nên sử dụng tùy chọn abortController.abort[[reason]]
1 [hoặc, nếu sử dụng API abortController.abort[[reason]]
2 để đính kèm trình xử lý, hãy sử dụng phương thức abortController.abort[[reason]]
3] để đảm bảo rằng trình xử lý sự kiện được xóa ngay sau khi sự kiện global
2 được xử lý. Không làm như vậy có thể dẫn đến rò rỉ bộ nhớ
AbortController
7#Đã thêm vào. v15. 0. 0, v14. 17. 0
- Loại hình. Đúng sau khi
AbortController
bị hủy bỏ
abortController.abort[[reason]]
7#Đã thêm vào. v15. 0. 0, v14. 17. 0
Chức năng gọi lại tùy chọn có thể được đặt theo mã người dùng để được thông báo khi chức năng Promise
2 được gọi
abortController.abort[[reason]]
9#Đã thêm vào. v17. 2. 0, v16. 14. 0
Một lý do tùy chọn được chỉ định khi AbortSignal
được kích hoạt
reason
1#Đã thêm vào. v17. 3. 0, v16. 17. 0
Nếu AbortController
7 là reason
3, ném abortController.abort[[reason]]
9
Lớp. reason
5#
Nhìn thấy
Lớp. reason
6#
Được sử dụng để xử lý dữ liệu nhị phân. Xem phần đệm
Lớp. reason
7#
Triển khai tương thích với trình duyệt của reason
7
reason
9#
Biến này có vẻ là toàn cục nhưng không phải. Xem reason
9
AbortSignal
1#
Biến này có vẻ là toàn cục nhưng không phải. Xem AbortSignal
1
AbortSignal
3#
Sự ổn định. 3 - Di sản. Sử dụng AbortSignal
4 thay thế
Bí danh toàn cầu cho AbortSignal
5
AbortSignal
6#
Nhìn thấy
AbortSignal
7#
Bí danh toàn cầu cho AbortSignal
8
AbortSignal
9#
reason
0 được mô tả trong phần bộ hẹn giờ
reason
1#
reason
2 được mô tả trong phần bộ hẹn giờ
reason
3
reason
4 được mô tả trong phần bộ hẹn giờ
Lớp. reason
5#
Triển khai tương thích với trình duyệt của reason
5
reason
7#
Được sử dụng để in ra thiết bị xuất chuẩn và thiết bị xuất chuẩn. Xem phần reason
7
Lớp. reason
9#
Triển khai tương thích với trình duyệt của reason
9
global
11#
Lịch sửPhiên bảnThay đổiv19. 0. 0
Không còn đứng sau cờ global
12 CLI
Đã thêm vào. v17. 6. 0, v16. 15. 0
Một triển khai tương thích với trình duyệt của. Toàn cầu này chỉ khả dụng nếu Nút. js nhị phân đã được biên dịch với sự hỗ trợ cho mô-đun global
13
global
14#
Lịch sửPhiên bảnThay đổiv19. 0. 0
Không còn đứng sau cờ global
12 CLI
Đã thêm vào. v17. 6. 0, v16. 15. 0
Triển khai Web Crypto API tương thích với trình duyệt
global
16#
Lịch sửPhiên bảnThay đổiv19. 0. 0
Không còn đứng sau cờ global
12 CLI
Đã thêm vào. v17. 6. 0, v16. 15. 0
Một triển khai tương thích với trình duyệt của. Toàn cầu này chỉ khả dụng nếu Nút. js nhị phân đã được biên dịch với sự hỗ trợ cho mô-đun global
13
global
19#
Lịch sửPhiên bảnThay đổiv19. 0. 0
Không còn đứng sau cờ global
20 CLI
Đã thêm vào. v18. 7. 0, v16. 17. 0
Triển khai tương thích với trình duyệt của API Web global
19
Lớp. global
22#
Triển khai tương thích với trình duyệt của global
22
global
24#
Lịch sửPhiên bảnThay đổiv15. 4. 0
Không còn thử nghiệm
v15. 0. 0Đã thêm vào. v15. 0. 0
Một triển khai tương thích với trình duyệt của lớp global
24. Xem API global
26 và global
24 để biết thêm chi tiết
global
26#
Lịch sửPhiên bảnThay đổiv15. 4. 0
Không còn thử nghiệm
v15. 0. 0Đã thêm vào. v15. 0. 0
Một triển khai tương thích với trình duyệt của lớp global
26. Xem API global
26 và global
24 để biết thêm chi tiết
global
12#
Biến này có vẻ là toàn cục nhưng không phải. Xem global
12
global
14#
Lịch sửPhiên bảnThay đổiv18. 0. 0
Không còn đằng sau cờ global
15 CLI
Đã thêm vào. v17. 5. 0, v16. 15. 0
Việc triển khai hàm global
16 tương thích với trình duyệt
Lớp global
17#
Lịch sửPhiên bảnThay đổiv18. 0. 0
Không còn đằng sau cờ global
15 CLI
Đã thêm vào. v17. 6. 0, v16. 15. 0
Một triển khai tương thích với trình duyệt của
global
19#
Trong các trình duyệt, phạm vi cấp cao nhất là phạm vi toàn cầu. Điều này có nghĩa là trong trình duyệt Promise
00 sẽ định nghĩa một biến toàn cục mới. trong nút. js cái này khác. Phạm vi cấp cao nhất không phải là phạm vi toàn cầu; . js sẽ là cục bộ của mô-đun đó
Lớp Promise
02
Lịch sửPhiên bảnThay đổiv18. 0. 0
Không còn đằng sau cờ global
15 CLI
Đã thêm vào. v17. 5. 0, v16. 15. 0
Một triển khai tương thích với trình duyệt của
Promise
04#
Lớp Promise
04. Xem Promise
04 để biết thêm chi tiết
Promise
07#
Lớp học Promise
07. Xem Promise
07 để biết thêm chi tiết
Promise
10#
Lớp Promise
10. Xem Promise
10 để biết thêm chi tiết
Promise
13#
Biến này có vẻ là toàn cục nhưng không phải. Xem Promise
13
Promise
15#
Lớp Promise
15. Xem Promise
15 để biết thêm chi tiết
Promise
18#
Lớp học Promise
18. Xem Promise
18 để biết thêm chi tiết
Promise
21#
Lớp học Promise
21. Xem Promise
21 để biết thêm chi tiết
Promise
24#
Lớp Promise
24. Xem Promise
24 để biết thêm chi tiết
Promise
27#
Lớp học Promise
27. Xem Promise
27 để biết thêm chi tiết
Promise
30#
Lớp Promise
30. Xem Promise
30 để biết thêm chi tiết
Promise
33#
Đối tượng Promise
34
Promise
35#
đối tượng quá trình. Xem phần đối tượng Promise
35
Promise
37#
Phương thức Promise
38 xếp hàng một vi tác vụ để gọi Promise
39. Nếu Promise
39 ném một ngoại lệ, sự kiện Promise
35 đối tượng Promise
42 sẽ được phát ra
Hàng đợi vi tác vụ được quản lý bởi V8 và có thể được sử dụng theo cách tương tự như hàng đợi Promise
43, được quản lý bởi Node. js. Hàng đợi Promise
43 luôn được xử lý trước hàng đợi vi tác vụ trong mỗi lượt của Nút. vòng lặp sự kiện js
Lớp. Promise
45#
Triển khai tương thích với trình duyệt của Promise
45
Lớp. Promise
47#
Triển khai tương thích với trình duyệt của Promise
47
Lớp. Promise
49#
Triển khai tương thích với trình duyệt của Promise
49
Lớp. Promise
51#
Triển khai tương thích với trình duyệt của Promise
51
Lớp. Promise
53#
Triển khai tương thích với trình duyệt của Promise
53
Lớp. Promise
55#
Triển khai tương thích với trình duyệt của Promise
55
Promise
57#
Biến này có vẻ là toàn cục nhưng không phải. Xem Promise
57
Promise
59#
Lịch sửPhiên bảnThay đổiv18. 0. 0
Không còn đằng sau cờ global
15 CLI
Đã thêm vào. v17. 5. 0, v16. 15. 0
Một triển khai tương thích với trình duyệt của
Promise
61#
Lịch sửPhiên bảnThay đổiv18. 0. 0
Không còn đằng sau cờ global
15 CLI
Đã thêm vào. v17. 5. 0, v16. 15. 0
Một triển khai tương thích với trình duyệt của
Promise
63#
Promise
64 được mô tả trong phần bộ hẹn giờ
Promise
65#
Promise
66 được mô tả trong phần bộ hẹn giờ
Promise
67
Promise
68 được mô tả trong phần bộ hẹn giờ
Promise
69#
Phương pháp WHATWG Promise
70
Promise
71#
Lịch sửPhiên bảnThay đổiv19. 0. 0
Không còn đứng sau cờ global
12 CLI
Đã thêm vào. v17. 6. 0, v16. 15. 0
Một triển khai tương thích với trình duyệt của. Toàn cầu này chỉ khả dụng nếu Nút. js nhị phân đã được biên dịch với sự hỗ trợ cho mô-đun global
13
Promise
74#
Lớp WHATWG Promise
74. Xem Promise
74 để biết thêm chi tiết
Promise
77#
Lớp học WHATWG Promise
77. Xem phần Promise
77
Lớp. Promise
80#
Triển khai tương thích với trình duyệt của Promise
80
Promise
82#
Lớp WHATWG Promise
82. Xem phần Promise
82
Lớp. Promise
85#
Triển khai tương thích với trình duyệt của Promise
85
Lớp. Promise
87#
Triển khai tương thích với trình duyệt của Promise
87
Lớp. Promise
89#
Triển khai tương thích với trình duyệt của Promise
89
Promise
91#
Lớp học WHATWG Promise
91. Xem phần Promise
91
Promise
94#
Lớp học WHATWG Promise
94. Xem phần Promise
94
Promise
97#
Đối tượng đóng vai trò là không gian tên cho tất cả các chức năng liên quan đến W3C WebAssembly. Xem Mạng nhà phát triển Mozilla để biết cách sử dụng và khả năng tương thích