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["Trăn là " + 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["Trăn là " + x]
myfunc[]
print["Trăn là " + x]
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
, biến thuộc phạm vi toàn cầu
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
Bạn không cần jQuery để thực hiện yêu cầu http. Thay vào đó, hãy sử dụng api tìm nạp trình duyệt hiện đại độc quyền. Bạn cần đợi để sử dụng biến đó cho đến khi yêu cầu http quay lại. Bạn có thể làm điều đó bằng cách sử dụng sự chờ đợi với tìm nạp để dừng và dừng javascript cho đến khi nhận được yêu cầu không đồng bộ
API tìm nạp - API web. MDN
Fetch API cung cấp giao diện để tìm nạp tài nguyên [bao gồm cả trên mạng]. Nó có vẻ quen thuộc với bất kỳ ai đã sử dụng XMLHttpRequest, nhưng API mới cung cấp một bộ tính năng linh hoạt và mạnh mẽ hơn
chờ đợi - JavaScript. MDN
Các toán tử chờ đợi được sử dụng để chờ một Lời hứa. Nó chỉ có thể được sử dụng bên trong một chức năng không đồng bộ trong mã JavaScript thông thường;
fyi nhà phát triển javascript hiện đại loại bỏ hoàn toàn jquery thay thế vị trí của nó ~ phần nào đó là các khung ui mvvm [model-view-view-model] là Angular, React và Vue để đặt tên cho các ứng cử viên hàng đầu. Mỗi dự án đó đều theo đuổi mục tiêu tối ưu hóa và đơn giản hóa việc hiển thị nội dung động thu được thông qua các phương tiện không đồng bộ như yêu cầu http
Nơi duy nhất bạn thực sự bắt gặp jquery là trong mã kế thừa cũ hơn và các nền tảng cms nguyên khối như WordPress. Phần còn lại của thế giới nhà phát triển giao diện người dùng hiện đại đã tiếp tục. Nhiều ưu điểm của jQuery đã bị phủ nhận bởi sự đổi mới của các trình duyệt hiện đại và tiêu chuẩn hóa apis
Đây là một bài viết khá hay mô tả chi tiết về sự sụp đổ không thể tránh khỏi của jQuery
Love2Dev – 14 tháng 4 20Tại sao jQuery đã lỗi thời và đã đến lúc ngừng sử dụng nó
jQuery đã cách mạng hóa cách thức hoạt động của web. Ngày nay, các tiêu chuẩn web đã bắt kịp và vượt qua các tính năng của jQuery, đã đến lúc sử dụng các API gốc để thay thế
Xin chào,
Tôi có thể gán phản hồi vào một biến khác, nhưng khi tôi cố cập nhật biến toàn cục thì nó cứ báo không xác định. Tôi thậm chí đã thử đặt hẹn giờ
Vấn đề ở đây là các yêu cầu Ajax không đồng bộ [đầu mối nằm trong tên — Ajax là viết tắt của “JavaScript và XML không đồng bộ”]. Điều này có nghĩa là mã của bạn không đợi yêu cầu hoàn thành trước khi [ví dụ] ghi lại giá trị của biến toàn cục ở một nơi khác trong mã của bạn
Hãy xem bài viết này để hiểu thêm
Kiểm soát luồng trong JS hiện đại. Gọi lại các lời hứa không đồng bộ/đang chờ - SitePoint
Craig Buckler đào sâu vào các vấn đề chính liên quan đến lập trình không đồng bộ trong JavaScript, chỉ ra cách làm cho cuộc sống của bạn dễ dàng hơn với Promise và async/await
Xin lỗi mới với JS, thậm chí còn mới hơn với jQuery
jQuery là JavaScript và như @windbenathmywings nói, nó ngày càng trở nên ít liên quan hơn khi các trình duyệt hiện đại triển khai nhiều tính năng của nó một cách nguyên bản. Tôi sẽ không đi xa đến mức nói “Đừng sử dụng nó”, nếu nó phù hợp với bạn, nhưng nếu bạn chưa đầu tư vào nó, thì có thể đáng để học cách làm mọi thứ mà không cần [trong trường hợp này thông qua
Hãy đọc bài báo tôi đã đăng, cũng như hai bài báo MDN được đăng bởi Windbeeathmywings và cho chúng tôi biết nếu bạn có bất kỳ câu hỏi nào
Lỗi Cors trên cùng một miền sẽ chỉ ra lỗi trên máy chủ bên trong admin-ajax. php
Tôi thú nhận rằng tôi không hiểu sâu về mạng, nhưng điều này đối với tôi có vẻ như là gốc rễ của vấn đề
Nếu bạn quay lại triển khai ban đầu của mình trước khi không đồng bộ/chờ bạn tìm thấy gì trong devtools dưới tab mạng. Bạn có thể sẽ muốn nhấp vào admin-ajax. php trong danh sách
Để cung cấp cho bạn một ý tưởng, tôi vừa thử hai cách tiếp cận sau từ xa trên máy chủ của trang web của tôi và cả hai đều hoạt động
tìm về
const setData = async [url, data] => {
try {
const response = await fetch[url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify[data]
}]
if [response.ok] return await response.json[]
throw Error[`${response.url}: ${response.status} ${response.statusText}`]
} catch [err] { console.log[err] }
return {}
}
...
async function addButtonHandler [event] {
const props = { .. }
const propsFromResponse = await setData['./set-data.php', props]
addElements.addButton[propsFromResponse]
buttonId++
}
jquery ajax
const setData = function [url, data] {
return jQuery.ajax[{
url,
data: JSON.stringify[data],
dataType: 'json',
method: 'POST'
}]
}
function addButtonHandler [event] {
const props = { .. }
const response = setData['./set-data.php', props]
response
.then[function [props] {
addElements.addButton[props]
buttonId++
}]
.catch[console.log]
}
chỉnh sửa. tập hợp dữ liệu. tập tin thử nghiệm php