Всем привет, я CUGGZ, новичок во фронтенде, сегодня я поделюсь некоторыми навыками разработки на JavaScript, надеюсь, это вам поможет~
1. Инициализировать массив
Если вы хотите инициализировать одномерный массив заданной длины и указать значение по умолчанию, вы можете сделать это:
const array = Array(6).fill('');
// ['', '', '', '', '', '']
Если вы хотите инициализировать двумерный массив заданной длины и указать значения по умолчанию, вы можете сделать это:
const matrix = Array(6).fill(0).map(() => Array(5).fill(0));
// [[0, 0, 0, 0, 0],
// [0, 0, 0, 0, 0],
// [0, 0, 0, 0, 0],
// [0, 0, 0, 0, 0],
// [0, 0, 0, 0, 0],
// [0, 0, 0, 0, 0]]
2. Суммирование массивов, максимальное значение, минимальное значение
const array = [5,4,7,8,9,2];
Суммирование массива:
array.reduce((a,b) => a+b);
Максимальное значение массива:
array.reduce((a,b) => a > b ? a : b);
Math.max(...array)
Минимальное значение массива:
array.reduce((a,b) => a < b ? a : b);
Math.min(...array)
Многие проблемы с оценкой массива можно решить с помощью метода сокращения массива.
3. Фильтрация значений ошибок
Если вы хотите отфильтровать false, 0, null, undefined и другие значения в массиве, вы можете сделать это:
const array = [1, 0, undefined, 6, 7, '', false];
array.filter(Boolean);
// [1, 6, 7]
4. Используйте логические операторы
Если есть такой кусок кода:
if(a > 10) {
doSomething(a)
}
Это можно переписать с помощью логических операторов:
a > 10 && doSomething(a)
Это будет гораздо проще написать: если значение перед логическим оператором И && ложно, произойдет операция короткого замыкания, и выполнение этого предложения будет прекращено напрямую, если оно истинно, код после оператора && будет продолжать выполняться, и будет возвращен следующий код return value. Использование этого метода может уменьшить количество суждений if...else.
5. Упрощение суждения
Если есть такое суждение следующим образом:
if(a === undefined || a === 10 || a=== 15 || a === null) {
//...
}
Вы можете использовать массив, чтобы упростить эту логику оценки:
if([undefined, 10, 15, null].includes(a)) {
//...
}
Таким образом, код будет намного проще и его будет легче расширять.Если все еще есть суждение, которое должно быть равно a, вы можете добавить его прямо в массив.
6. Очистить массив
Если вы хотите очистить массив, вы можете установить длину массива равной 0:
let array = ["A", "B", "C", "D", "E", "F"]
array.length = 0
console.log(array) // []
7. Рассчитайте производительность кода
Производительность вашего кода можно рассчитать с помощью следующих операций:
const startTime = performance.now();
// 某些程序
for(let i = 0; i < 1000; i++) {
console.log(i)
}
const endTime = performance.now();
const totaltime = endTime - startTime;
console.log(totaltime); // 30.299999952316284
8. Объединение массивов
Если мы хотим объединить несколько массивов, мы можем использовать оператор распространения:
const start = [1, 2]
const end = [5, 6, 7]
const numbers = [9, ...start, ...end, 8] // [9, 1, 2, 5, 6, 7 , 8]
Или используйте метод concat() массива:
const start = [1, 2, 3, 4]
const end = [5, 6, 7]
start.concat(end); // [1, 2, 3, 4, 5, 6, 7]
Но при использовании метода concat(), если объединяемые массивы большие, функция concat() потребляет много памяти при создании отдельного нового массива. В настоящее время вы можете использовать следующие методы для объединения массивов:
Array.prototype.push.apply(start, end)
Таким образом, использование памяти значительно сокращается.
9. Метод проверки объекта
Если у нас есть такой объект:
const parent = {
child: {
child1: {
child2: {
key: 10
}
}
}
}
Много раз мы будем писать это, чтобы избежать ошибки, если определенный уровень не существует:
parent && parent.child && parent.child.child1 && parent.child.child1.child2
Это сделает код раздутым, вы можете использовать необязательный оператор цепочки JavaScript:
parent?.child?.child1?.child2
Эта реализация и эффект такие же, как в длинном списке выше.
Необязательный оператор цепочки также работает с массивами:
const array = [1, 2, 3];
array?.[5]
Необязательный оператор цепочки позволяет нам считывать значения свойств, расположенных глубоко в цепочке связанных объектов, без необходимости явно проверять, действительна ли каждая ссылка в цепочке. Ошибка не возникает, если ссылка имеет значение null (null или undefined), короткое замыкание выражения возвращает значение undefined. При использовании с вызовами функций возвращает неопределенное значение, если данная функция не существует.
10. Проверка undefined и null
Если есть такой кусок кода:
if(a === null || a === undefined) {
doSomething()
}
То есть, если вам нужно проверить, что значение равно null или undefined, и вам нужно выполнить операцию, вы можете использовать оператор объединения значений null, чтобы упростить приведенный выше код:
a ?? doSomething()
Таким образом, код оператора объединения элементов управления будет выполняться только в том случае, если a не определено или имеет значение null. Оператор объединения null (??) — это логический оператор, который возвращает правый операнд, когда левый операнд имеет значение null или не определен, в противном случае возвращает левый операнд.
11. Конвертировать элементы массива на цифры
Если у вас есть массив и вы хотите преобразовать элементы массива в числа, вы можете использовать для этого метод карты:
const array = ['12', '1', '3.1415', '-10.01'];
array.map(Number); // [12, 1, 3.1415, -10.01]
Таким образом, map будет выполнять конструктор Number для каждого элемента массива по мере его обхода по массиву и возвращать результат.
12. Преобразование массива классов в массив
Аргументы, подобные массиву, можно преобразовать в массив, используя следующие методы:
Array.prototype.slice.call(arguments);
В дополнение к этому вы также можете использовать оператор распространения для достижения:
[...arguments]
13. Объекты динамически объявляют свойства
Если вы хотите динамически объявлять свойства объекта, вы можете сделать это:
const dynamic = 'color';
var item = {
brand: 'Ford',
[dynamic]: 'Blue'
}
console.log(item);
// { brand: "Ford", color: "Blue" }
14. Сократите console.log()
Написание большого количества console.log() каждый раз при отладке может быть громоздким, вы можете использовать следующую форму, чтобы упростить этот код:
const c = console.log.bind(document)
c(996)
c("hello world")
Это будет делать это каждый раз, когда выполняется метод c.
15. Получить параметры запроса
Если мы хотим получить параметры в URL-адресе, мы можем использовать свойства объекта окна:
window.location.search
Если URL-адресwww.baidu.com?project=js&type=1Затем с помощью вышеуказанной операции вы получите ?project=js&type=1. Если вы хотите получить один из параметров, вы можете сделать это:
let type = new URLSearchParams(location.search).get('type');
16. Округление числа
Если число содержит десятичные знаки, и мы хотим удалить десятичные знаки, мы будем использовать методы math.floor, math.ceil или math.round для удаления десятичных знаков. На самом деле вы можете использовать оператор ~~ для удаления дробной части числа, что намного быстрее, чем эти методы для чисел.
~~3.1415926 // 3
На самом деле у этого оператора много функций, обычно он используется для преобразования переменных в числовые типы, результаты преобразования разных типов разные:
- Если это строка числового типа, она будет преобразована в чистое число;
- Если строка содержит значение, отличное от числа, оно будет преобразовано в 0;
- Если это логический тип, true вернет 1, false вернет 0;
В дополнение к этому способу мы также можем использовать побитовое И для реализации операции округления чисел, просто добавляя число после числа|0
Только что:
23.9 | 0 // 23
-23.9 | 0 // -23
Эта операция также напрямую удаляет десятичную дробь после числа. Этот метод аналогичен описанному выше, и его производительность будет намного лучше, чем у JavaScript API.
17. удалить элемент массива
Если мы хотим удалить элемент в массиве, мы можем использовать для этого удаление, но элемент после удаления станет неопределенным и не исчезнет, а при выполнении будет потреблять много времени, что не может нас удовлетворить в большинстве случаев спрос. Таким образом, вы можете использовать метод splice() массива для удаления элементов массива:
const array = ["a", "b", "c", "d"]
array.splice(0, 2) // ["a", "b"]
18. Проверьте, пуст ли объект
Если мы хотим проверить, пуст ли объект, мы можем использовать следующий способ:
Object.keys({}).length // 0
Object.keys({key: 1}).length // 1
Метод Object.keys key() для получения объекта возвращает массив, содержащий значение ключа. Если длина массива возвращает 0, то объект заведомо пуст.
19. Используйте switch case вместо if/else
Случай switch работает лучше, чем if/else, и код выглядит чище.
if (1 == month) {days = 31;}
else if (2 == month) {days = IsLeapYear(year) ? 29 : 28;}
else if (3 == month) {days = 31;}
else if (4 == month) {days = 30;}
else if (5 == month) {days = 31;}
else if (6 == month) {days = 30;}
else if (7 == month) {days = 31;}
else if (8 == month) {days = 31;}
else if (9 == month) {days = 30;}
else if (10 == month) {days = 31;}
else if (11 == month) {days = 30;}
else if (12 == month) {days = 31;}
Используйте switch...case, чтобы переписать:
switch(month) {
case 1: days = 31; break;
case 2: days = IsLeapYear(year) ? 29 : 28; break;
case 3: days = 31; break;
case 4: days = 30; break;
case 5: days = 31; break;
case 6: days = 30; break;
case 7: days = 31; break;
case 8: days = 31; break;
case 9: days = 30; break;
case 10: days = 31; break;
case 11: days = 30; break;
case 12: days = 31; break;
default: break;
}
Это кажется относительно кратким. Вы можете переписать if...else с массивом или объектом, в зависимости от ситуации.
20. Получить последний элемент в массиве
Если вы хотите получить последний элемент в массиве, это часто записывается так:
const arr = [1, 2, 3, 4, 5];
arr[arr.length - 1] // 5
На самом деле, мы также можем использовать метод slice массива, чтобы получить последний элемент массива:
arr.slice(-1)
Когда мы устанавливаем параметру метода slice отрицательное значение, значение массива будет перехвачено из конца массива.Если мы хотим перехватить два последних значения, параметр может быть передан в -2.
21. Преобразование значения в логическое значение
В JavaScript следующие значения преобразуются в false при преобразовании логических значений, а все остальные значения преобразуются в true:
- undefined
- null
- 0
- -0
- NaN
- ""
Обычно, если мы хотим преобразовать явное значение в логическое значение, мы будем использовать метод Boolean() для его преобразования. На самом деле мы можем использовать оператор !!, чтобы преобразовать значение в логическое значение. Мы знаем это! состоит в том, чтобы преобразовать объект в логический и отрицать два! Он заключается в инвертировании инвертированного логического значения, что эквивалентно прямому преобразованию значения нелогического типа в значение логического типа. Эта операция намного быстрее, чем метод Boolean(), потому что она встроена в компьютер:
!!undefined // false
!!"996" // true
!!null // false
!!NaN // false
22. Отформатируйте код JSON
Я считаю, что все использовали метод JSON.stringify, который может преобразовать объект или значение JavaScript в строку JSON. Его синтаксис следующий:
JSON.stringify(value, replacer, space)
Он имеет три параметра:
- value: значение, которое будет сериализовано в строку JSON.
- replacerНеобязательно: если параметр является функцией, то при сериализации каждое свойство сериализованного значения будет преобразовано и обработано функцией; если параметр является массивом, функцией будут преобразованы и обработаны только свойства, содержащиеся в массиве. Имя свойства будет сериализовано в окончательную строку JSON; если параметр имеет значение null или не указан, будут сериализованы все свойства объекта.
- spaceНеобязательно: укажите пустую строку для отступа, используемого для украшения вывода (красивая печать); если параметр является числом, он представляет количество пробелов; верхний предел — 10. Если значение меньше 1, значит, пробела нет, если параметром является строка (при длине строки более 10 букв брать первые 10 букв), строка будет восприниматься как пробел; если параметр не указан (или null), пробелов не будет.
Обычно мы пишем параметр для преобразования объекта или значения JavaScript в строку JSON. Вы можете видеть, что у него также есть два необязательных параметра, поэтому мы можем использовать эти два параметра для форматирования кода JSON:
console.log(JSON.stringify({ alpha: 'A', beta: 'B' }, null, '\t'));
Результат выглядит следующим образом:
23. Избегайте eval() и with()
- with() вставит переменную в глобальную область. Поэтому, если другая переменная имеет такое же имя, это может вызвать путаницу и перезаписать значение.
- eval() — дорогостоящая операция, и каждый раз при ее вызове обработчик сценариев должен преобразовывать исходный код в исполняемый код.
24. Функциональные параметры используют объекты вместо списков параметров
Когда мы используем список параметров для передачи параметров в функцию, то лучше, если будет меньше параметров, но если параметров больше, будет больше хлопот, потому что мы должны передавать параметры в порядке списка параметров. Если вы используете TypeScript для записи, то вам нужно сделать необязательные параметры после обязательных параметров при записи.
Если у нашей функции много параметров, то можно рассмотреть возможность использования формы объектов для передачи параметров.При передаче параметров в виде объектов необязательные параметры не нужно передавать в конце, и порядок параметров не важен. То, что передается через объект, также легче читать и понимать, чем список параметров.
Вот пример:
function getItem(price, quantity, name, description) {}
getItem(15, undefined, 'bananas', 'fruit')
Вот как использовать передачу объектов:
function getItem(args) {
const {price, quantity, name, description} = args
}
getItem({
name: 'bananas',
price: 10,
quantity: 1,
description: 'fruit'
})
На сегодня это все, если вы считаете это полезным, ставьте лайк! В конце года я побегу за 100 ватт, чтобы читать~🤣