【发布时间】:2016-03-08 23:08:58
【问题描述】:
在这段代码中我不明白为什么如果我在第一个 if 条件成功插入断点if(data == 1){ 我可以看到fromCTA 变量但看不到$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();
});
代码工作正常,没有错误,请分析它只是为了回答我关于变量范围的问题:
在成功的匿名函数中,我可以在 Chrome 调试器中看到只有变量 fromCTA 和 msg 的闭包,而我希望看到 $form、formArrSerialized 和 len。我认为它们都具有相同的域
【问题讨论】:
标签: javascript scope closures