对象中缺少参数-应该未定义

时间:2018-10-18 19:09:46

标签: javascript node.js ecmascript-6

我有这个:

EventSubscription.prototype.subscribe = function(name, fn, filters, callback) {

    logger.debug('event subscriber subscribe:',{name,fn,filters});

};

我们在日志中得到了这个

debug: event subscriber subscribe: {"name":"NotifyStaffUponReferralCreate"}

我发现这很奇怪,因为即使我传递了未定义的参数,我也应该得到这个:

debug: event subscriber subscribe: {"name":"NotifyStaffUponReferralCreate", fn: undefined, filters: undefined}

有人知道为什么未定义的参数不会出现在对象分解中吗?

我的节点版本为v10.10.0

我做了一个小实验,看看会发生什么:

const foo = undefined;
const bar = 1;

const fn = function(bar, foo) {
  console.log({foo,bar});
};

fn(bar);
fn(bar, foo);

我得到:

{ foo: undefined, bar: 1 }
{ foo: undefined, bar: 1 }

我不知道怎么回事。

1 个答案:

答案 0 :(得分:0)

这是因为我正在将Winston日志记录包用于Node.js。