从简单的 setInterval 函数中获取返回值
Get a returned value from a simple setInterval function
为什么如果我有一个函数 returns 每次调用该函数时它都会在控制台中显示一个值,但是如果我将相同的函数放在 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'
而不是 return Hello World,如果这是您想要的效果,您应该 console.log("Hello World")。您的脚本正在按照您的预期进行解释。它是 运行 每秒 return 次 "Hello World" 的函数。但是,在包含该功能之前,returned 字符串不会记录到控制台。
function run() {
console.log("Hello world");
return 'Hello world';
}
setInterval
的目的是每X毫秒执行一个函数。在您的原始代码中,每次 run
函数 returns 时,它都会返回到本机 setInterval
函数的上下文。 setInterval
函数不会 console.log 自动为您计算出来。
当您 运行 您的代码 run();
时,它 returns 的值 Hello world
。您在屏幕上看到它的值的唯一原因是控制台计算表达式和 returns 它的值供您查看。
您的目标不是控制台作为代码中的输出流,但是当您从控制台调用 运行() 时,它只是 returns 字符串到控制台,可以尝试回调:
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);
利亚姆是正确的。这是有点迷惑的地方:
Calling run() returns 'Hello world' to the console
是 而不是 正在发生的事情。将 run()
returns "Hello world" 调用到函数的 调用者 .
如果您在控制台中输入表达式,表达式的值将输出到控制台。如果您输入 1+1
,您将得到 2
。如果您输入 Math.sqrt(25)
,您将得到 5
。所以如果你输入 run()
你会得到 Hello world
.
为什么如果我有一个函数 returns 每次调用该函数时它都会在控制台中显示一个值,但是如果我将相同的函数放在 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'
而不是 return Hello World,如果这是您想要的效果,您应该 console.log("Hello World")。您的脚本正在按照您的预期进行解释。它是 运行 每秒 return 次 "Hello World" 的函数。但是,在包含该功能之前,returned 字符串不会记录到控制台。
function run() {
console.log("Hello world");
return 'Hello world';
}
setInterval
的目的是每X毫秒执行一个函数。在您的原始代码中,每次 run
函数 returns 时,它都会返回到本机 setInterval
函数的上下文。 setInterval
函数不会 console.log 自动为您计算出来。
当您 运行 您的代码 run();
时,它 returns 的值 Hello world
。您在屏幕上看到它的值的唯一原因是控制台计算表达式和 returns 它的值供您查看。
您的目标不是控制台作为代码中的输出流,但是当您从控制台调用 运行() 时,它只是 returns 字符串到控制台,可以尝试回调:
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);
利亚姆是正确的。这是有点迷惑的地方:
Calling run() returns 'Hello world' to the console
是 而不是 正在发生的事情。将 run()
returns "Hello world" 调用到函数的 调用者 .
如果您在控制台中输入表达式,表达式的值将输出到控制台。如果您输入 1+1
,您将得到 2
。如果您输入 Math.sqrt(25)
,您将得到 5
。所以如果你输入 run()
你会得到 Hello world
.