如何在函数内获取此变量的值?

时间:2016-05-15 22:04:42

标签: javascript node.js

我是javascript的新手,我真的不知道如何获得“网络”价值。

curl --proxy <<mywebsite>> http://yahoo.com

我只想在功能之外使用“网络”

有人可以帮助我吗?谢谢!

4 个答案:

答案 0 :(得分:0)

在扫描功能之前添加变量,并在函数内设置值:

var netValue = null;
scanner.scan(function(error, networks){
   netValue = networks;
   if(error) {
      console.error(error);
    } else {
      console.log(networks); << print the correct value
    }
});
console.log(netValue);

如果scanner.scan()函数是异步调用,则最后一行仍然可能无效。

答案 1 :(得分:0)

您可以创建全局值网络,并从扫描功能中更新:

var globalNetworks;

scanner.scan(function(error, networks){
    globalNetworks = networks;
    if(error) {
      console.error(error);
    } else {
      console.log(networks); << print the correct value
    }
});
console.log(networks) << print the correct value

我建议您阅读有关范围如何在javascript中运行的信息: http://www.w3schools.com/js/js_scope.asp

答案 2 :(得分:0)

您无法获取networks的值的原因是因为它包含在闭包中,该值仅在该函数内可用。 到这里阅读有关闭包的更多信息:

How do JavaScript closures work?

要在外部访问它,可以在函数外部创建另一个变量,并将其设置为函数内的network变量:

var otherNetworks;
scanner.scan(function(error, networks){
   otherNetworks = networks;
   if(error) {
      console.error(error);
    } else {
      console.log(networks); << print the correct value
    }
   });
 console.log(otherNetworks) << print correctValue

答案 3 :(得分:0)

我之前已经做过,但它只展示了全球价值:

var globalNetworks = "global"
var scanner = wifiscanner();

    scanner.scan(function(error, networks){
      globalNetworks = networks;
      console.log(globalNetworks) //displaying all the wlan0 networks available
      if(error) {
        console.error(error);
      } else {
        // console.log(networks);
      }
    });

    console.log(globalNetworks) // displaying global
不过,网络是一个json