Оптимизируйте свой код JavaScript, используя современные методы сокращения, советы и приемы.
Как разработчик я убедился, что обучение - это непрерывный процесс. Поскольку новые технологии и обновления появляются каждый год, нам необходимо их обновлять соответствующим образом, чтобы получить от них максимальную отдачу.
Сегодня я делюсь шпаргалкой, которая очень помогла мне сократить часть кода, а также сделать его более читабельным.
Примечание. Иногда сокращение затрудняет понимание кода разработчиком, если он о нем не знает 😊 .
Тогда перейдем к списку.
1. Если стенография
Вам скучно использовать множество операторов If? Давайте проверим какой-нибудь вариант, который может здесь помочь
//longhandif (fruit === 'apple' || fruit === 'banana' || fruit === 'orange' || fruit ==='mango') { //logic }
//shorthandif (['apple', 'banana', 'orange', 'mango'].includes(fruit)) { //logic }
2. Если… иначе Сокращение
Это может помочь, когда у нас есть операторы if-else. (убедитесь, что у вас есть максимум 2–3 if ... иначе код будет менее читабельным)
// Longhand letmychoice
: boolean; if (money > 100) {mychoice
= true; } else {mychoice
= false; } // Shorthand letmychoice
= (money > 10) ? true : false; //or we can use directly letmychoice
= money > 10; console.log(mychoice
);
вложенные условия выглядят так
let salary = 300, checking = (salary > 100) ? 'greater 100' : (x < 50) ? 'less 50' : 'between 50 and 100'; console.log(checking); // "greater than 100"
3. Объявления переменных
когда у нас есть переменные одного и того же типа, мы можем избежать записи дважды.
//Longhand let data1; let data2= 1; //Shorthand let data1, data2= 1;
4. Проверка ненулевых значений
Что, если мы хотим проверить, что переменная не равна нулю? Теперь мы можем снова избавиться от записи всех условий.
// Longhand if (data1 !== null || data1!== undefined || data1 !== '') { let data2 = data1; } // Shorthand let data2 = data1 || '';
5. Назначение значений по умолчанию
let data1 = null, data2 = test1 || ''; console.log("null check", data2); // output will be ""
6. Проверка неопределенного значения
let data1 = undefined, data2 = data1 || ''; console.log("undefined check", data2); // output will be ""
Проверка нормального значения
let data1 = 'data', data2 = data1 || ''; console.log(data); // output: 'data'
(Примечание: мы также можем использовать оператор ??
для темы 4,5 и 6)
7. Нулевой оператор
Этот оператор возвращает значение правой части, если левая часть равна нулю или не определена.
const data= null ?? 'data'; console.log(data); // expected output: "data" const data1 = 1 ?? 4; console.log(data1); // expected output: 1
8. Присвоение значений
//Longhand let data1, data2, data3; data1 = 1; data2 = 2; data3 = 3; //Shorthand let [data1, data2, data3] = [1, 2, 3];
9. Операторы присваивания
Он в основном используется, когда мы имеем дело с арифметическими операторами, лично мне нравится здесь отрисовка от руки, так как она более читабельна.
// Longhand data1 = data1 + 1; data2 = data2 - 1; data3 = data3 * 30; // Shorthand data1++; data2--; data3 *= 30;
10. Нулевые проверки
Один из наиболее часто используемых операндов, но убедитесь, что ваши значения соответствуют истине, непустые строки, определенные значения, а не нулевые значения.
// Longhand if (data1 === true) or if (data1 !== "") or if (data1 !== null) // Shorthand // if (test1)
Примечание. Если test1 имеет какое-либо значение, оно попадет в логику после цикла if, этот оператор в основном используется для нулевых или неопределенных проверок.
11. Оператор AND (&&)
Если мы хотим избежать одного оператора if, то это сокращение будет полезно.
//Longhand if (test1) { callMethod(); } //Shorthand test1 && callMethod();
12. Вернуть стенографию
Это поможет избежать большого фрагмента кода, который специально возвращается для вызова методов на основе операторов возврата.
// Longhand let value; function returnMe() { if (!(value === undefined)) { return value; } else { return callFunction('value'); } } var data = returnMe(); console.log(data); //output value function callFunction(val) { console.log(val); } // Shorthand function returnMe() { return value || callFunction('value'); }
13. Стрелочные функции
//Longhand function add(a, b) { return a + b; } //Shorthand const add = (a, b) => a + b;
Давайте проверим еще один пример
function function(value) { console.log('value', value); }
function= value => console.log('value', value);
14. Короткие вызовы функций
Мы можем использовать тернарный оператор для выполнения этих функций.
// Longhand function data1() { console.log('data1'); }; function data2() { console.log('data2'); }; var data3 = 1; if (data3 == 1) { data1(); } else { data2(); } //data1 // Shorthand (data3 === 1 ? data1 : data2)(); //data1
15. Оптимизация статуса коммутатора
Если вы хотите оптимизировать операторы переключения, это может помочь.
// Longhand switch (data) { case 1: data1(); break; case 2: data2(); break; case 3: data(); break; // And so on... } // Shorthand var data = { 1: data1, 2: data2, 3: data }; const val = 1 data[val](); function data1() { console.log("data1"); } function data2() { console.log("data2"); } function data() { console.log("data"); }
16. Неявный возврат
Стрелочные функции могут помочь вернуть значение даже без написания операторов возврата. Круто, правда?
//longhandfunction calculate(diameter) { return Math.PI * diameter }
//shorthandcalculate = diameter => ( Math.PI * diameter; )
17. Показатели с десятичным основанием
// Longhand for (var i = 0; i < 100000; i++) { ... } // Shorthand for (var i = 0; i < 1e5; i++) {
18. Значения параметров по умолчанию
//Longhand function add(data1, data2) { if (data1 === undefined) data1 = 1; if (data2 === undefined) data2 = 2; return data1 + data2; } //shorthand add = (data1 = 1, data2 = 2) => data1 + data2; console.log(add()); //output: 3
19. Оператор спреда
Это может быть полезно в другом месте для создания ссылки на массив, а также для мелкой копии.
//longhand// joining arrays using concat const testdata= [1, 2, 3]; const values = [4 ,5 , 6].concat(data);
//shorthand// joining arrays const testdata = [1, 2, 3]; const values = [4 ,5 , 6, ...testdata]; console.log(test); // [ 4, 5, 6, 1, 2, 3]
Для клонирования мы также можем использовать оператор распространения.
//longhand// cloning arrays const data1 = [1, 2, 3]; const data2 = data1.slice()
//shorthand// cloning arrays const data1 = [1, 2, 3]; const data2 = [...data1];
20. Шаблонные литералы
Если вы ищете сокращение для добавления нескольких значений в строку, то это сокращение для вас.
//longhandconst literal = 'Hi ' + data1 + ' ' + data2 + '.'
//shorthand
const literal= `Hi ${data1} ${data2}`;
21. Многострочные струны
//longhandconst literal = '
abc abc abc abc abc abc\n\t' +
'val test,test test test test\n\t' //shorthandconst literal = `
abc abc abc abc abc abc val test,test test test test`
22. Передача собственности объекта
let data1 = 'abcd'; let data2 = 'efgh'; //Longhand let data = {data1: data1, data2: data2}; //Shorthand let data = {data1, data2};
23. Преобразование чисел
//Longhand let test1 = parseInt('12'); let test2 = parseFloat('2.33'); //Shorthand let test1 = +'12'; let test2 = +'2.33';
24. Деструктурирующее присвоение
//longhand const data1 = this.data.data1; const data2 = this.data.data2; const data2 = this.data.data3; //shorthand const { data1, data2, data3 } = this.data;
25. Метод Array.find
Один из методов из массива, который находит первые совпавшие значения из массива.
const data = [{ type: 'data1', name: 'abc' }, { type: 'data2', name: 'cde' }, { type: 'data1', name: 'fgh' }, ] function datafinddata(name) { for (let i = 0; i < data.length; ++i) { if (data[i].type === 'data1' && data[i].name === name) { return data[i]; } } } //Shorthand filteredData = data.find(data => data.type === 'data1' && data.name === 'fgh'); console.log(filteredData); // { type: 'data1', name: 'fgh' }
26. Побитовый индекс сокращения
Что, если мы сможем объединить метод indexof с сокращением? Побитовые индексы выполняют за нас ту же работу.
//longhand if (data.indexOf(item) > -1) { // item found } if (data.indexOf(item) === -1) { // item not found } //shorthand if (~data.indexOf(item)) { // item found } if (!~data.indexOf(item)) { // item not found }
мы также можем использовать функцию include.
if (data.includes(item)) { // true if the item found }
27. Object.entries ()
Эта функция помогает преобразовать объект в массив объектов.
const data = { data1: 'abc', data2: 'cde', data3: 'efg' }; const arr = Object.entries(data); console.log(arr); //[ ['data1', 'abc'], ['data2', 'cde'], ['data3', 'efg'] ]
28. Object.values () и Object.keys ()
Может быть полезно перебрать значения объекта.
const data = { data1: 'abc', data2: 'cde' }; const arr = Object.values(data); console.log(arr); //[ 'abc', 'cde']
Object.keys () может быть полезен для перебора ключей от объекта.
const data = { data1: 'abc', data2: 'cde' }; const arr = Object.keys(data); console.log(arr); //[ 'data1', 'data2']
29. Двойное побитовое сокращение
(Побитовый оператор с двойным НЕ работает только для 32-битных целых чисел)
// Longhand Math.floor(1.9) === 1 // true // Shorthand ~~1.9 === 1 // true
30. Повторите строку несколько раз.
Этот строковый метод может быть полезен для повторения одного и того же строкового значения снова и снова.
//longhand let data = ''; for (let i = 0; i < 5; i++) { data += 'data '; } console.log(str); // data data data data data //shorthand 'data '.repeat(5);
31. Найдите максимальное и минимальное число в массиве.
const data = [1, 4, 3]; Math.max(…data); // 4 Math.min(…data); // 1
32. Получить символ из строки
let str = 'test'; //Longhand str.charAt(2); // s //Shorthand Note: this is only works if we know the index of matched character str[2]; // c
33. Стенография власти
//longhandMath.pow(2,2); // 4
//shorthand2**2 // 4
Больше контента на plainenglish.io