函数与其他函数的返回值作为变量,异步与否?

时间:2016-01-18 13:49:46

标签: javascript

我有以下内容:

var module = {}
module.setDate = function() {
    var d = new Date();
    return d;
}

我现在说:

function logDate(){
   var date = module.setDate();
   console.log(date)
   console.log('finished')
}

var date的设置是module.setDate()的返回值同步还是异步?控制台可能看起来像:

undefined
'finished'

1 个答案:

答案 0 :(得分:0)

我认为你混淆了一个带有构造函数的函数调用。

var d = new Date();

这将立即创建一个Date对象,这就是你的函数返回的内容。

另一方面,如果您的功能是

var module = {}
module.setDate = function() {
    return function() {
        var d = new Date();
        return d;
    }
}

这将是异步的,但不能并行执行。您返回的函数的执行将等到您调用该函数。

function logDate(){
   var date = module.setDate();
   console.log(date() /* <--- need these parens, now! */)
   console.log('finished')
}

为了真正并行执行,我认为你试图通过说“异步”来提问,那么我建议你阅读其中一个链接。