为什么我需要调用函数而不是方法?

时间:2018-10-21 07:26:54

标签: javascript node.js

在Node.js中,我有以下代码:

console.log('starting');


function sayHello() {
    console.log('HEllo!!');
}


setTimeout(() => {
    console.log('inside of callback');
}, 1000);

console.log('finishing app');

为什么如果我通过终端运行(App)文件,它会显示setTimeout函数的结果,而不显示sayHello?毕竟,我也没有调用setTimeout函数! 此外,如果我将setTimeout函数存储在类似

的变量中
var x = setTimeout(() => {
    console.log('inside of callback');
}, 1000);

该函数也会自动调用!为什么?

2 个答案:

答案 0 :(得分:1)

setTimeout的实现类似于(这只是一个模拟实现):

function setTimeout(callback, interval, ....args) {
    // wait for `interval` time to pass
    callback(...args);
}

如您所见,setTimeout是一个将一个函数(在上例中为callback)作为参数的函数,并在经过interval时间后调用了该函数。 / p>

答案 1 :(得分:1)

此处没有与函数或方法的链接。关于declarationcall

操作时:

function sayHello() {
    console.log('HEllo!!');
}

您声明了不会调用的函数sayHello。要调用它,您需要在声明它后执行sayHello();

使用setTimeout()时,您正在通过JavaScript调用内置函数已声明。要知道如何使用已经声明的函数,您需要查看该函数的文档。示例:check here(部分语法)。

注意:JavaScript中的每个函数都附加到一个对象,因此每个函数都是一个方法。例如,setTimeout附加到全局对象(在浏览器中为window,在Node中为global)。您的sayHello()函数也将附加到其作用域。

相关问题