如何访问javascript中函数内的函数内的变量?
var a;
var surveyObjects = Parse.Object.extend(surveyObject);
var query= new Parse.Query(surveyObjects);
query.count({
success: function(count){a = count;},
error: function(error){}
});
alert("count of function "+a);
a
显示undefined
值。我需要在外面使用a
的值。
答案 0 :(得分:5)
您可以使用隐式全局变量行为来完成此操作。
function one(){
function two(){
a=10;
}
two();
}
one();
console.log(a);
如果你没有在javascript I.E中声明一个变量而不使用var
关键字,那么它就变成了一个全局变量。
进一步阅读:
答案 1 :(得分:3)
由于javascript和大多数语言,范围变量如何,您无法从函数外部访问函数内部声明的变量。该变量仅属于函数的作用域,而不属于全局作用域。
幸运的是,函数继承了调用者的范围。因此,从函数外部访问变量的最简单方法是首先在函数外部声明,然后在函数内部使用它。
function one(){
var a;
function two(){
a = 10;
return a;
}
return a;
}
请注意,您应该非常注意变量的范围。功能的全部意义在于封装和隔离功能。
对于promises,您可以在promise之外声明一个变量,然后在成功时设置其值。
var a;
Parse.doSomething().then(function(data) {
a = data;
});
编辑:根据您在评论中显示的内容,您遇到了异步问题。 Promise是异步的,意味着它们不会在代码中按顺序运行。这就是存在success
和error
回调的原因,一旦promise解决就会被调用。您的alert(a)
在promise回调之外,因此它立即运行,而不等待Parse承诺解析,因此a
仍未定义。如果您将alert(a)
放在promise回调中,那么{I}将设置为a
。
var a;
query.count({
success: function(count) {
a = count;
alert(a);
return a;
},
error: function(err) {}
});
答案 2 :(得分:1)
// You can simply do it by
function test()
{
this.name='xyz';
}
var obj = new test();
console.log(obj.name);
答案 3 :(得分:0)
function one() {
this.two = function () {
var a = 10;
return a;
}
}
var o = new one();
alert(o.two());
答案 4 :(得分:0)
感谢。 我将变量声明为全局并在内部函数中插入值,然后在函数内部进行函数调用以触发另一个调用该值的函数。
var a=0;
var surveyObjects = Parse.Object.extend(surveyObject);
var query= new Parse.Query(surveyObjects);
query.count({
success: function(count) {a =count; total();},
error:function(error){}
});
function total(){alert (a);}
答案 5 :(得分:0)
使用return语句全局访问变量。
function(){
var k=1;//local
return k;//global
}
result=k+10;//sample