繁体   English   中英

JavaScript全局变量未声明的问题

[英]Javascript global variable undeclared problem

在上述示例代码中,我试图获取val变量的值。 我用全局范围声明了它。 并添加一些控制台日志以验证值。 但是在函数内部,它可以毫无问题地分配值。 但是未声明函数val。 这是为什么?

$.validator.addMethod("serialverify", function(){
                var val;
                $("#serialno").keyup(function(){
                    serial().done(function(data){
                        console.log('final = ' + data);
                        val = data;
                        console.log(val);
                    });
                }); console.log(val);
                return val;
            }, "Please enter valid serial code");

您的代码中存在一个基本问题。 分配是在回调函数中进行的,这意味着它仅在进行动作keyup时才执行。

但是,语句return val是同步发生的。

建议-

您可以将其包装在某种形式的Promise中,并在done resolve它。 某些东西-

......done( function(data) { ..... resolve(val); })

或声明var val ; 作为外部的全局方法, addMethod函数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM