关于javascript范围的澄清
在这段代码中,我无法理解为什么我在success关于javascript范围的澄清,javascript,scope,closures,Javascript,Scope,Closures,在这段代码中,我无法理解为什么我在successif(data==1){中的第一个if条件上插入断点,我可以从cta变量中看到,但不能看到$form: jQuery('.pane-tab form, form#hlp_contactCTA').on('click','.input-submit',function(e){ var $form = jQuery(this).parent('form'); var fromCTA = false; var formArrSer
if(data==1){
中的第一个if条件上插入断点,我可以从cta变量中看到,但不能看到$form
:
jQuery('.pane-tab form, form#hlp_contactCTA').on('click','.input-submit',function(e){
var $form = jQuery(this).parent('form');
var fromCTA = false;
var formArrSerialized = $form.serializeArray();
var len = formArrSerialized.length;
for(var i=0; i<len; i++ ){
if(formArrSerialized[i].name == 'message'){
var msg = formArrSerialized[i].value;
}
}
if(msg){
if(!$form.is('#msg-form')){ //we are in user account
fromCTA = true;
//formArrSerialized.push({name:'fromCTA', value: 1});
}
formArrSerialized.push({name:'action', value:'send_message'});
var param = jQuery.param(formArrSerialized);
jQuery.ajax({
url:pathToAjax() + 'wp-admin/admin-ajax.php',
data:param,
type:'POST',
success: function(data){
if(data == 1){
if(!fromCTA){
appendMsg(msg);
} else {
showMsg('Il messaggio è stato inviato',2000,function(){jQuery('#popup-contactCTA').hide();});
}
} else {
console.log('qualcosa è andato storto');
};
},
error: function(){
console.log('error');
}
});
}
e.preventDefault();
});
jQuery('.pane选项卡表单,表单#hlp_contactCTA')。打开('click','input submit',函数(e){
var$form=jQuery(this.parent('form');
var fromCTA=假;
var formArrSerialized=$form.serializeArray();
var len=格式序列化的.length;
对于(var i=0;i这正是调试器的工作方式。默认情况下,调试器仅显示当前范围内的变量。它不显示父范围内的变量
但是,如果您在父范围(如$form
)中为变量设置了观察点,您将能够很好地看到其值
因此,这只是调试器的工作方式,与代码的实际工作方式或Javascript的实际工作方式无关。这可能是因为在全局范围内可能有很多变量,如果这些变量都包含在范围内的变量列表中,那么看到更多的局部变量将非常复杂
请记住,作用域是层次结构。当您在层次结构的一个层次上询问一些变量时,上面可能有更多层次的作用域,然后它最终将到达包含所有全局变量的全局作用域。因此,您看到的实际上只是在调试器中进行的UI选择。这只是way调试器工作。默认情况下,调试器仅显示当前作用域中的变量。它不显示父作用域中的变量
但是,如果您在父范围(如$form
)中为变量设置了观察点,您将能够很好地看到其值
因此,这只是调试器的工作方式,与代码的实际工作方式或Javascript的实际工作方式无关。这可能是因为在全局范围内可能有很多变量,如果这些变量都包含在范围内的变量列表中,那么看到更多的局部变量将非常复杂
请记住,作用域是层次结构。当您在层次结构的一个层次上询问一些变量时,上面可能有更多层次的作用域,然后它将最终到达包含所有全局变量的全局作用域。因此,您看到的实际上只是在调试器中做出的UI选择