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运行的顺序参见我的第一段了解更多详细信息