Javascript:如何更改匿名函数中的变量

Javascript:如何更改匿名函数中的变量,javascript,angularjs,Javascript,Angularjs,大家好,我在用js做一个新项目,我有一个问题,所以我想知道如何更改匿名函数中的变量 myFunct : function(){ var name = "Alexander "; if(true) { db.transaction(function(t){ name = "Stephane"; //How do i change my variable [name] at this level? t.

大家好,我在用js做一个新项目,我有一个问题,所以我想知道如何更改匿名函数中的变量

myFunct : function(){

    var name = "Alexander ";

    if(true)
    {

        db.transaction(function(t){

            name = "Stephane"; //How do i change my variable [name] at this level?

            t.executeSql('SELECT * FROM users',[]);
        });
    }

    return name; //this function returns me Alexander and not Stephane
},

db.transact
的回调函数在函数返回后运行

如果在更改名称的行上方放置一个
console.log
,返回时在上面放置一个,那么您将看到这一点

如果你想把这个名字作为一个值返回,考虑一下返回一个承诺,然后用名字作为一个值来解决这个承诺。< /P>


或者,您的函数可以接受回调,该回调将在事务完成后使用值进行调用。

#不清楚您的快乐感谢是什么,这称为闭包。名称是在函数内部捕获的,不会更改外部变量@拒绝访问:不,不是。是的,这是一个闭包,这就是为什么这个函数可以更改外部变量的原因。你的匿名函数工作得很好。它确实改变了变量——只是为时已晚。通过异步调用,旧值在赋值发生之前就已经被
return
ed了,这要感谢很多人