Javascript Closure - 局部变量嵌套 func [重复]

问题描述 投票:0回答:1

我正在尝试使用在函数 P 中定义的变量 x ,我试图在另一个函数中设置其值。它总是未定义。

我试着用我的思想来使用封闭,但它只是让我失去了理智。它没有给我一个字符串而是一个对象。

逻辑如下。

function P(i){
var x;
if(i!=null){    
//this pulls the data correctly and i could see it in network tab response. 
var dataFromQuery=widgets.DATA.create({
    url:"abc/cde",
    queryTemplate :"/query"+i+ "?"
});
    //we query the data and set the value as per the logic.
     dataFromQuery.query(function(data){
         if(data[0].name){
             x=data[0].name; // this stays undefined , and i understand this is a new local variable x.Also the value is here and comes fine here so no issues with the data but i want to set it to the variable defined outside as x.
         }
     })
}
else{
    x="somehardcode";
}

};

我尝试将结果 dataFromQuery.query(function(data){ 存储到 var 中,然后将其设置为 x 但它再次作为对象出现,我需要将其作为字符串。 谢谢

javascript jquery scope closures global-variables
1个回答
-1
投票

我想你正在寻找这样的东西:

var P = (function() {
    var x;
    function _P(i) {
        //your internal logic here
    }
    return _P;
})();

x
_P
都包装在外壳中,并且范围仅限于自动执行的匿名函数。
_P
返回并可在外部范围内用作
var P
,但
x
将保持隐藏状态。

© www.soinside.com 2019 - 2024. All rights reserved.