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

aw0*_*w04 5 javascript

在javascript中,当我们不关心忽略falsey值时,我们经常会看到如下代码来设置默认参数.

function SomeObject (param) {
    this.param = param || {};
}
Run Code Online (Sandbox Code Playgroud)

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

function SomeObject (param) {
    this.param = param = param || {};
}
Run Code Online (Sandbox Code Playgroud)

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

Poi*_*nty 4

在此代码中:

function SomeObject (param) {
    this.param = param = param || {};
}
Run Code Online (Sandbox Code Playgroud)

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

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

function whatever(x) {
  x = x || {};
Run Code Online (Sandbox Code Playgroud)

然而,在有意义的情况下分配给对象属性并没有什么问题。