带有额外赋值的Javascript默认参数

时间:2015-09-30 13:06:09

标签: javascript

在javascript中,我们经常会看到以下代码,以便在我们不关心忽略虚假值时设置默认参数。

function SomeObject (param) {
    this.param = param || {};
}

有时,在阅读代码时,我会遇到以下变体:

function SomeObject (param) {
    this.param = param = param || {};
}

有人可以向我解释这个用例吗?

1 个答案:

答案 0 :(得分:4)

在此代码中:

function SomeObject (param) {
    this.param = param = param || {};
}

进行两个单独的赋值:一个是param局部变量(函数的实际参数),另一个是属性this,无论发生什么。这两个不同的分配目标相同。 (当然,他们会得到相同的价值,但他们在两个不同的地方放置价值。)

根据我的经验,看到为参数本身建立的简单默认值更为常见:

function whatever(x) {
  x = x || {};

然而,在有意义的情况下分配对象属性并没有错。