Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于javascript范围的澄清_Javascript_Scope_Closures - Fatal编程技术网

关于javascript范围的澄清

关于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

在这段代码中,我无法理解为什么我在success
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选择