Мутирование Flashcards
1
Q
Мутирование
A
- Объекты и Массивы мутабельны, когда меняем через точку (присваиваем что-то новое), то мутируем объект.
Если ссылки на объект разные, то по факту объект один.
Пример объекта:
let user = {
name: ‘Dimych’,
age: 32
}const superman = user
superman.age = 1000
expect(user.age).toBe(1000)
Пример массива:
test (‘arr’, () => {
let users = [
{
name: ‘Dimych’,
age: 32
},
{
name: ‘Dimych’,
age: 32
}
]
let admins = users admins.push({name: 'Banda', age: 10}) expect(users[2]).toEqual({name: 'Banda', age: 10}) })
- Значение - переприсваивание, т.е. примитивы нельзя изменить, так как их можно пересоздать и переприсвоить новое значение.
Константа защищает примитивы, но не объекты и массивы
let usersCount = 100;
let adminsCount = usersCount
adminsCount++
Но usersCount будет равно все равно 100, а не 101
- При ссылочном типе - переменная будет изменяться, если мы хотим ее перезаписать у всех объектах и массивах
Лучше всего в Реакте избегать мутирующих функций, таких как push, sort и ссылки