[英]Weird JavaScript scoping behavior
Latey我在一些怪異的javascript行為上遇到了麻煩。 我想做這樣的事情:
var lang = null;
function getLang() {
if (browserLanguageIsGerman) {
lang = 'de';
}
else {
lang = 'en';
}
// alert(lang) shows "de"
$('#someID').load(someValidUrl, null,
function(response, status, xhr) {
if(languageSettingsOnFacebookIsGerman) {
lang = 'de';
}
else {
lang = 'en';
}
// alert(lang) show "en"
);
// alert(lang) shows "de"
}
第一個和第二個警報顯示實際值1)“ de” 2)“ en”。 第三個警報顯示“ de”,但不應該是“ en”嗎? 同樣,第二個警報在第三個警報之后彈出。
有人可以請問一下我心中明顯的錯誤嗎? :)
提前致謝!
這不是范圍的問題。 load
方法是異步的。 第三個alert
在傳遞給load
的回調之前執行。 將所有依賴於該異步調用結果的代碼移到回調中。
另外,您可以查看jQuery延遲對象API 。 請注意,如果你使用遞延對象API,你需要改變你打電話load
到一個呼叫jQuery.get
或jQuery.ajax
,因為.load
返回的jQuery的一個實例,不履行承諾的接口。
不,不應該。 “加載”不等待,您的“ someValidUrl”中的信息將被提取。 相反,當信息可用時,它將推遲內部函數在以后執行,並立即返回而無需等待。 它稱為“異步”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.