Автор: Дмитрий Павлютин Переводчик: Front-end Xiaozhi Источник: dmitripavlutin.com
Ставь лайк и смотри, поиск в WeChat【Переезд в мир】Обратите внимание на этого человека, который не имеет большого фабричного прошлого, но имеет восходящий и позитивный настрой. эта статья
GitHubGitHub.com/QQ449245884…Он был включен, статьи были классифицированы, и многие мои документы и учебные материалы были систематизированы.
Все говорили, что нет проекта для написания резюме, поэтому я помог вам найти проект, и это было с бонусом.【Учебник по строительству】.
Переключатель переменной
Обычно метод замены двух переменных требует дополнительной временной переменной, взгляните на пример:
let a = 1;
let b = 2;
let temp;
temp = a;
a = b;
b = temp;
a; // => 2
b; // => 1
tempэто временная переменная, она сначала сохраняетaценность . тогда поставьbЗначение, присвоенноеa, тоtempприсвоить значениеb.
Было бы проще использовать деструктурирование, не нужно призракаtempПеременная.
let a = 1;
let b = 2;
[a, b] = [b, a];
a; // => 2
b; // => 1
[a,b] = [b,a]это присваивание деструктуризации, справа создается массив[b, a],Прямо сейчас[2,1]. этот массив2назначен наa1 назначенb.
Хоть этот метод и создает временный массив, этот метод выглядит как минимум лаконичнее, с помощью деструктуризации мы можем еще и обменяться2более одной переменной.
let zero = 2;
let one = 1;
let two = 0;
[zero, one, two] = [two, one, zero];
zero; // => 0
one; // => 1
two; // => 2
2. Доступ к элементам в массиве
Существует сценарий, в котором у нас может быть пустой массив элементов. и хотите получить доступ к первому, второму или n-му элементу массива, но использовать указанное значение по умолчанию, если элемент не существует.
обычно используют массивlengthприписывать судить
const colors = [];
let firstColor = 'white';
if (colors.length > 0) {
firstColor = colors[0];
}
firstColor; // => 'white'
Использование деструкурирования массива, тот же эффект может быть достигнут более кратко:
const colors = [];
const [firstColor = 'white'] = colors;
firstColor; // => 'white'
const [firstColor = 'white'] = colorsДеконструкция будетcolorsПервый элемент массива присваиваетсяfirstColorПеременная. если массив находится в индексе0элементов нет, присвоить"white"По умолчанию.
Конечно, это может быть более гибко, если вы хотите получить доступ только ко второму элементу, вы можете сделать это.
const colors = [];
const [, secondColor = 'black'] = colors;
secondColor; // => 'black'
Обратите внимание на запятую слева от деструктуризации: это означает игнорировать первый элемент,secondColorиспользоватьcolorsИндекс в массиве1элементы назначаются.
3. Неизменяемые операции
когда я начну использоватьReactа такжеReduxКогда вынуждены написать какой-то код, который подчиняется неизменности. Хотя поначалу это было немного сложно, позже я увидел преимущество: было проще иметь дело с однонаправленным потоком данных.
Неизменяемость требует, чтобы исходный объект не мог быть изменен. К счастью, деструктуризация позволяет легко реализовать определенные операции неизменяемым образом.
const numbers = [1, 2, 3];
const [, ...fooNumbers] = numbers;
fooNumbers; // => [2, 3]
numbers; // => [1, 2, 3]
разрушать[, ... fooNumbers] = numbersсоздать новый массивfooNumbers,fooNumbersВключатьnumbersэлементов, кроме первого элемента.
numbersМассив не изменился, сохранив оперативную неизменность.
Таким же неизменяемым способом можно удалить свойство из объекта, затем попытаться удалить свойство из объектаbigудалятьfooАтрибуты:
const big = {
foo: 'value Foo',
bar: 'value Bar'
};
const { foo, ...small } = big;
small; // => { bar: 'value Bar' }
big; // => { foo: 'value Foo', bar: 'value Bar' }
4. Деконструкция итерируемых объектов
В предыдущих примерах деструктуризация использовалась для массивов, но мы можем деструктурировать любой объект, реализующий [итерируемый протокол][2].
Многие примитивные примитивные типы и объекты являются итерируемыми:array, string, typed arrays, setа такжеmap.
Если вы не хотите ограничиваться примитивными типами, вы можете настроить логику деструктурирования, реализуя итерируемый протокол.
moviesсодержитmovieсписок объектов. в деконструкцииmoviesкогда будетtitleПолучить его в виде строки — это здорово. Давайте реализуем собственный итератор.
const movies = {
list: [
{ title: 'Heat' },
{ title: 'Interstellar' }
],
[Symbol.iterator]() {
let index = 0;
return {
next: () => {
if (index < this.list.length) {
const value = this.list[index++].title;
return { value, done: false };
}
return { done: true };
}
};
}
};
const [firstMovieTitle] = movies;
console.log(firstMovieTitle); // => 'Heat'
moviesОпределяя объектыSymbol.iteratorметод реализации итерируемого протокола, итерационные итерацииtitle.
следитьповторяемый протоколразрешитьmoviesОбъект разлагается вtitle, Первый способ заключается в чтении определенногоmoviesизtitle:const [firstMovieTitle] = movies.
5. Деконструкция динамических свойств
Как правило, деструктуризация объектов с помощью свойств более распространена, чем деструктуризация массивов.
Деструктуризация объектов выглядит намного проще:
const movie = { title: 'Heat' };
const { title } = movie;
title; // => 'Heat'
const {title} = movieсоздать переменнуюtitleИ собственностьmovie.titleприсвоенное ему значение.
Когда дело доходит до деструктуризации объектов, я немного удивлен, что нам не нужно знать имена свойств статически, мы можем использовать динамические имена свойств для деструктуризации объектов.
Чтобы понять, как работает динамическая деструктуризация, напишитеgreetфункция:
function greet(obj, nameProp) {
const { [nameProp]: name = 'Unknown' } = obj;
return `Hello, ${name}!`;
}
greet({ name: 'Batman' }, 'name'); // => 'Hello, Batman!'
greet({ }, 'name'); // => 'Hello, Unknown!'
использовать2вызов с параметрамиgreet()Функция: Имя объекта и свойства.
существуетgreet()Внутренне деструктурирующее назначениеconst {[nameProp]:name ='Unknown'} = objИспользуйте квадратные скобки[nameProp]читать имена динамических свойств,nameПеременные получают динамические значения свойств.
Еще лучше, если свойство не существует, вы можете указать значение по умолчанию.Unknown".
Ошибки, которые могут существовать после деплоя кода, нельзя узнать в режиме реального времени.Чтобы решить эти ошибки потом, много времени тратится на отладку логов.Кстати, я хотел бы порекомендовать полезный [Инструмент мониторинга ошибок Фундебуг][3].
оригинал:Рисовая поездка avlutin.com/5-interest i…
общаться с
Статья постоянно обновляется каждую неделю. Вы можете выполнить поиск «Big Move to the World» в WeChat, чтобы прочитать и обновить ее как можно скорее (на одну или две статьи раньше, чем в блоге). Эта статья находится на GitHub.GitHub.com/QQ449245884…Он был включен, и многие мои документы были разобраны. Добро пожаловать в Звезду и совершенство. Вы можете обратиться в тестовый центр для ознакомления во время собеседования. Кроме того, обратите внимание на паблик-аккаунт и ответьте в фоновом режиме.Благосостояние, вы можете увидеть преимущества, вы знаете.
[1]: GitHub.com/QQ449245884…
[2]: developer.Mozilla.org/en-US/docs/…
[3]: woohoo.fun на bug.com/?UTM_source…