if语句javascript中的局部变量

if语句javascript中的局部变量,javascript,Javascript,为什么结果是5555?不是7777?我认为eval是全局值,if语句将eval值更新为7777,我认为结果将是7777,但我意识到它不是。谁能告诉我为什么。对不起,我有类似的问题 您正在执行异步任务。 回调函数不一定在控制台.log之前运行 这就是javascript非阻塞IO的本质。当您需要执行IO操作时,您可以传递回调,当IO完成时,它将调用您的回调,同时CPU可以自由地在JS文件中执行其他过程。您正在执行异步任务。 回调函数不一定在控制台.log之前运行 这就是javascript非阻塞I

为什么结果是5555?不是7777?我认为eval是全局值,if语句将eval值更新为7777,我认为结果将是7777,但我意识到它不是。谁能告诉我为什么。对不起,我有类似的问题

您正在执行异步任务。 回调函数不一定在
控制台.log
之前运行


这就是javascript非阻塞IO的本质。当您需要执行IO操作时,您可以传递回调,当IO完成时,它将调用您的回调,同时CPU可以自由地在JS文件中执行其他过程。

您正在执行异步任务。 回调函数不一定在
控制台.log
之前运行


这就是javascript非阻塞IO的本质。当您需要执行IO操作时,您可以传递回调,当IO完成时,它将调用您的回调,同时CPU可以在您的JS文件中执行其他过程。

请求中的回调是异步的

因此,当您调用
console.log
时,是在执行
请求之前。尝试登录回调本身

var request = require('request');
var cheerio = require('request');
var eval = "5555";

request('http://google.com', function (error, response, body) {
    if (!error && response.statusCode == 200) {
        var keys = body.split(",");
        eval = keys[0]; // Think keys[0] is 7777
// and no problem in if statement, it must be excuted.
    }
})

console.log("evalue :"+eval);
// result ---> 5555  

请求中的回调是异步的

因此,当您调用
console.log
时,是在执行
请求之前。尝试登录回调本身

var request = require('request');
var cheerio = require('request');
var eval = "5555";

request('http://google.com', function (error, response, body) {
    if (!error && response.statusCode == 200) {
        var keys = body.split(",");
        eval = keys[0]; // Think keys[0] is 7777
// and no problem in if statement, it must be excuted.
    }
})

console.log("evalue :"+eval);
// result ---> 5555  

因为
console.log
是在上述请求的响应到达之前执行的,因为这是异步执行。尝试将
console.log
放在匿名函数中以获取所需的值

request('http://google.com', function (error, response, body) {
    if (!error && response.statusCode == 200) {
        var keys = body.split(",");
        eval = keys[0]; // Think keys[0] is 7777
        console.log("evalue :"+eval);
    }
})

因为
console.log
是在上述请求的响应到达之前执行的,因为这是异步执行。尝试将
console.log
放在匿名函数中以获取所需的值

request('http://google.com', function (error, response, body) {
    if (!error && response.statusCode == 200) {
        var keys = body.split(",");
        eval = keys[0]; // Think keys[0] is 7777
        console.log("evalue :"+eval);
    }
})

请求
是异步的。因此,您的console.log在回调之前启动。
require
不是普通JavaScript的一部分。这还需要标记什么?
请求
是异步的。因此,您的console.log在回调之前启动。
require
不是普通JavaScript的一部分。这还需要标记什么?