JavaScript全局变量未声明的问题

时间:2018-11-19 07:09:06

标签: javascript

在上述示例代码中,我试图获取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");

1 个答案:

答案 0 :(得分:3)

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

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

建议-

您可以将其包装在某种约定中,并在执行resolvedone进行包装。 -

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

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