Javascript:如何更改匿名函数中的变量
大家好,我在用js做一个新项目,我有一个问题,所以我想知道如何更改匿名函数中的变量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.
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了,这要感谢很多人