我有这段代码:

    sliderData () {
        let sliderData = this.product.slider;

        sliderData.title = 'test';

        // {{ $t('related_product_slider_header', { category: 'hello', designer: 'hey' }) }}
        return sliderData;
    }


然后es-lint(prefer-const)警告我并告诉我:

'sliderData' is never reassigned. Use 'const' instead.eslint(prefer-const)


但这是一个谎言,不是吗?我确实将对象向下分配了一行。

我真的不明白。

最佳答案

您无需重新分配sliderData。您更改属性。就JS而言,“分配”对象仅是指将其用作分配运算符的左侧术语,如:

sliderData = someObject;

所以:

const sliderData = this.product.slider;

sliderData.title = 'test'; //This is fine

sliderData = new Object(); //error


注意:这是因为“ sliderData”的值是包含对象地址而不是对象本身的引用:这也是为什么两个对象之间的等效性失败的原因,除非为一个对象分配了另一个的值。

关于javascript - 永远不会重新分配“对象”。使用'const'代替,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60172599/

10-10 09:30