Javascript 一个函数产生两个不同的结果?回叫地狱
在HTML中:Javascript 一个函数产生两个不同的结果?回叫地狱,javascript,jquery,callback,Javascript,Jquery,Callback,在HTML中: TABS.cutoffs = {}; TABS.cutoffs.initialize = function(callback) { var self = this; $("select[name=selectlanguage]").on("change", function() { localStorage.setItem("languageValue", $(this).val()); console.log(localStorage.getItem(
TABS.cutoffs = {};
TABS.cutoffs.initialize = function(callback) {
var self = this;
$("select[name=selectlanguage]").on("change", function() {
localStorage.setItem("languageValue", $(this).val());
console.log(localStorage.getItem('languageValue'), "inside$JqueryFunction");
});
console.log(localStorage.getItem('languageValue'), "outsidetheFunction");
if (callback) callback();
};
看到了吗?它应该是相同的,就像:
en outsidetheFunction
zh inside$JqueryFunction
或
为什么
localStorage.getItem('languageValue')
在函数$(“select[name=selectlanguage]”)内外变得不同。在(“change”,function()
?中没有回调地狱
以下是调用initialize
函数时发生的情况:
- 更改事件处理程序已设置(但未调用)
- 本地存储在控制台中读取和打印
“en outsidetheFunction”
是在控制台中打印的。很可能是因为“en”是在本地存储中编写的。我想是以前执行的
然后,“zh inside$JqueryFunction”
将在控制台中打印。
很可能是因为您在select中选择了“zh”,它触发了更改事件,该事件在localStorage中写入并打印了新值。因为在事件处理程序外部记录后它会更改?var a=1;console.log(a);a=2;//为什么控制台会说a是1?
en outsidetheFunction
zh inside$JqueryFunction
en outsidetheFunction
en inside$JqueryFunction
zh outsidetheFunction
zh inside$JqueryFunction