gpt4 book ai didi

带/不带括号的 Javascript 函数调用

转载 作者:行者123 更新时间:2023-11-30 07:08:03 24 4
gpt4 key购买 nike

代码_0:

(调用 foo 不带括号)

function foo(){
console.log('hello world');
}

setTimeout(foo, 2000);

code_0 是这样执行的:

start -> wait for 2 seconds -> 'hello world' displayed -> end

代码_1:

(用括号调用foo)

function foo(){
console.log('hello world');
}

setTimeout(foo(), 2000);

这就是 code_1 的执行方式:

start -> 'hello world' displayed immediately -> wait for 2 seconds -> end

为什么当我用括号调用函数时程序的执行会如此不同?底层机制是什么?

抱歉,如果这个问题太琐碎了。但是我找不到任何针对初学者的 javascript 教程的解释。

最佳答案

setTimeout(foo, 2000) 将函数 foo 和数字 2000 作为参数传递给 setTimeoutsetTimeout(foo(), 2000) 调用 foo 并将其返回值和数字 2000 传递给 setTimeout

在第一个示例中,您根本没有调用该函数,只是像传递任何其他值一样将其作为参数传递。

作为一个更简单的例子,只需记录一下:

function foo() {
return 5;
}

console.log(foo); // console.log is passed a function and prints [Function]

console.log(foo()); // foo() is called and returns 5; console.log is passed 5
// and prints 5

关于带/不带括号的 Javascript 函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34563330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com