从简单的setInterval函数获取返回值

时间:2015-01-03 00:44:00

标签: javascript function setinterval

为什么如果我有一个函数返回一个值,它每次调用函数时都会在控制台中显示,但是如果我在setInterval中放置相同的函数则退出该值。即:

function run() {
    return 'Hello world';
}

a = setInterval(run, 1000); //'Hello world' is not shown in the console every second

//Calling run() returns 'Hello world' to the console
run(); //'Hello world'

4 个答案:

答案 0 :(得分:1)

而不是返回Hello World,你应该是console.log(" Hello World"),如果那是你想要的效果。您的脚本正在按预期解释。它运行的函数返回" Hello World"每一秒。但是,在包含该功能之前,返回的字符串不会记录到控制台。

function run() {
  console.log("Hello world");
  return 'Hello world';
}

答案 1 :(得分:1)

setInterval的目的是每X毫秒执行一次函数。在原始代码中,当run函数每次返回时,它返回到本机setInterval函数的上下文。 setInterval函数不会自动登录。自动为您登录。<​​/ p>

运行代码run();时,它会返回值Hello world。您在屏幕上看到其值的唯一原因是控制台评估表达式并返回其值以供您查看。

答案 2 :(得分:0)

您的目标不是控制台作为代码中的输出流,但是当您从控制台调用run()时,它只是将字符串返回到控制台,可以尝试回调:

var run = function(fn){
    fn("hello world");//invoke the callback function
};

setTimeout(function(){
  run(alert);//target output to alert
  run(console.log);//now its console
}, 500);

答案 3 :(得分:0)

利亚姆是正确的。这有点令人困惑:

Calling run() returns 'Hello world' to the console 正在发生的事情。调用run()返回&#34; Hello world&#34;到函数的 调用者

如果您在控制台中并输入表达式,则表达式的值将输出到控制台。如果您输入1+1,您将获得2。如果您输入Math.sqrt(25),您将获得5。因此,如果您输入run(),您将获得Hello world