Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在函数中定义变量后访问该变量_Javascript_Node.js - Fatal编程技术网

Javascript 在函数中定义变量后访问该变量

Javascript 在函数中定义变量后访问该变量,javascript,node.js,Javascript,Node.js,我试图访问函数外部的变量,但我没有定义 meliObject.get('users/me', function (err, res) { nickname = res.nickname; }); console.log(nickname); 如何访问昵称 编辑 我将代码更改为: var nickname; meliObject.get('users/me', function (err, res) { nickname

我试图访问函数外部的变量,但我没有定义

 meliObject.get('users/me', function (err, res) {
           nickname = res.nickname;
  });

console.log(nickname);
如何访问昵称

编辑

我将代码更改为:

var nickname;

        meliObject.get('users/me', function (err, res) {

            nickname = res.nickname;


        });

        console.log(nickname);

但是我仍然得到未定义的

该函数的结果是异步的,所以您不能这样做。Javascript流程如下:运行meliObject.get,立即返回,运行console.log昵称,然后等待调用回调。要正确运行console.log,只需执行以下操作:

 meliObject.get('users/me', function (err, res) {
           nickname = res.nickname;
  });

console.log(nickname);
meliObject.get('users/me', function (err, res) {
   nickname = res.nickname;
   console.log(nickname);
});
现在,为了回答您的问题,要在函数外部声明变量,只需使用var/let/const:

var a = 2;
(function () {
    a = 3;
})();
console.log(a);

它将按预期打印。

此问题是您开始回调的问题。欢迎光临@NickA-不,这个变量是全局变量。这是关于时间,而不是范围。我在问题中更改了代码,但我变得不确定,这是因为我描述的第一个问题;您的错误不是作用域,而是异步性。您需要将console.log放在回调函数中,因为JS运行的顺序参见我的第一段了解更多详细信息