«объект» никогда не переназначается. Вместо этого используйте «const» - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть этот кусок кода:

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

        sliderData.title = 'test';

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

Тогда es-lint (предпочитает-const) предупреждает меня и говорит мне, что:

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

Но это все ie не так ли? Я переназначаю объект на одну строку вниз.

Я не совсем понимаю.

Ответы [ 3 ]

4 голосов
/ 11 февраля 2020

Вы не переназначаете sliderData. Вы меняете собственность. Что касается JS, то «назначение» объекта означает только использование его в качестве левого термина оператора присваивания, например:

sliderData = someObject;

Итак:

const sliderData = this.product.slider; 

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

sliderData = new Object(); //error

Примечание. Это связано с тем, что значение «sliderData» является ссылкой , содержащей адрес объекта, а не сам объект: по этой же причине сбой эквивалентности между двумя объектами возможен, если только одному было присвоено значение другого.

2 голосов
/ 11 февраля 2020

Вы не переназначаете адрес, который хранит sliderData, вы просто изменяете этот объект.

Вы можете и должны использовать const вместо let, потому что вы не переназначаете sliderData переменная. Если для примера вы должны были написать sliderData = 3, это переназначает, sliderData.something = 3 не переназначает.

1 голос
/ 11 февраля 2020

Пока вы не переназначаете sliderData, оно считается постоянным. Хотя вы объявляете объект как const, вы можете добавлять свойства и редактировать значения в нем. Пожалуйста, смотрите ниже:

const car = {type:"Fiat", model:"500", color:"white"};

// You can change a property:
car.color = "red";

// You can add a property:
car.owner = "Johnson";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...