访问javascript中函数内部函数内的变量?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了访问javascript中函数内部函数内的变量?相关的知识,希望对你有一定的参考价值。

如何在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的值。

答案

您可以使用隐式全局变量行为来完成此操作。

function one(){
   function two(){
      a=10;
   }
  
  two();
}

one();
console.log(a);
另一答案

由于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是异步的,意味着它们不会在代码中按顺序运行。这就是successerror回调存在的原因,一旦承诺解决就会被召唤。你的alert(a)在promise回调之外,所以它立即运行,而不是等待Parse承诺解决所以a仍未定义。如果你把alert(a)放在promise回调中,那么a就会被设置。

var a;
query.count({
    success: function(count) {
        a = count;
        alert(a);
        return a;
    },
    error: function(err) {}
});
另一答案
//  You can simply do it by 
function test()
{
    this.name='xyz';
}
var obj = new test();

console.log(obj.name);
另一答案

谢谢。我将变量声明为全局并在内部函数内插入值,然后在函数内部进行函数调用以触发另一个调用该值的函数。

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);}
另一答案

喜欢它:

function one() {
    this.two = function () {
        var a = 10;
        return a;
    }
}

var o = new one();
alert(o.two());
另一答案

使用return语句全局访问变量。

function(){
var k=1;//local
return k;//global
}
result=k+10;//sample

以上是关于访问javascript中函数内部函数内的变量?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript变量作用域

JavaScript 闭包 立即执行函数

访问javascript函数内部的函数内部的变量?

javascript闭包

什么是——JS闭包

Javascript闭包