
JavaScript — один из самых популярных языков программирования в мире, и не зря. Он универсальный, мощный и может использоваться для всего, от веб-разработки до серверного программирования. Однако с большой силой приходит и большая ответственность, и разработчику JavaScript важно знать, как писать эффективный и оптимизированный код. В этой статье мы рассмотрим некоторые скрытые советы и приемы для написания лучшего кода JavaScript, в том числе продвинутые методы использования стрелочных функций, деструктуризации, шаблонных литералов и многое другое. К концу этой статьи вы лучше поймете, как сделать свой код JavaScript более кратким, удобочитаемым и производительным, что поможет вам стать более опытным и продуктивным разработчиком.
1. Используйте строгий режим
Один из самых важных советов по написанию эффективного кода JavaScript — использование строгого режима. Это специальный режим, обеспечивающий более строгий синтаксический анализ и обработку ошибок в JavaScript. Чтобы использовать строгий режим, просто добавьте use strict; в начало файла JavaScript. Например;
// Example 1
"use strict";
x = 3.14; // This will throw an error in strict mode
//Example 2
"use strict";
function myFunction() {
console.log(this); // This will be undefined in strict mode
}
//Example 3
"use strict";
const myObject = {
name: "John",
getName() {
console.log(this.name); // This will work correctly in strict mode
}
};
myObject.getName();
Это включит строгий режим для всего файла и поможет выявить ошибки и другие проблемы на ранних этапах процесса кодирования.
2. Используйте деструктурирование
Деструктуризация — это мощная функция JavaScript, позволяющая извлекать значения из массивов и объектов и присваивать их переменным. Это может помочь сделать ваш код более кратким и читабельным, а также повысить производительность за счет уменьшения объема кода, который необходимо написать. Вот несколько примеров:
// Example 1
const myArray = [1, 2, 3];
const [first, second, third] = myArray;
console.log(first); // 1
console.log(second); // 2
console.log(third); // 3
// Example 2
const myObject = { name: "John", age: 30 };
const { name, age } = myObject;
console.log(name); // "John"
console.log(age); // 30
// Example 3
function myFunction({ name, age }) {
console.log(name); // "John"
console.log(age); // 30
}
const myObject = { name: "John", age: 30 };
myFunction(myObject);
// Example 4 [Nested Objects]
const myObject = {
foo: "bar",
baz: {
qux: 42,
},
};
const { foo, baz: { qux } } = myObject;
console.log(foo, qux); // "bar" 42
3. Используйте стрелочные функции
Стрелочные функции — еще одна мощная функция JavaScript, которая может помочь вам писать более эффективный и читабельный код. Стрелочные функции — это более лаконичный способ определения функций в JavaScript, и они также имеют лексическую область видимости, что означает, что они могут обращаться к переменным в окружающем их контексте. См. примеры:
//Example 1
const myArray = [1, 2, 3];
const result = myArray.map((number) => number * 2);
console.log(result); // [2, 4, 6]
// Example 2
const myFunction = (x, y) => x + y;
console.log(myFunction(2, 3)); // 5
// Example 3
const myObject = { name: "John", age: 30 };
const getName = () => console.log(myObject.name);
getName(); // "John"
// Example 4
const myObject = {
myMethod() {
setTimeout(() => {
console.log(this);
}, 1000);
},
};
myObject.myMethod(); // logs the myObject object
// Example 5 [Composition]
const addOne = (x) => x + 1;
const double = (x) => x * 2;
const addOneAndDouble = (x) => double(addOne(x));
console.log(addOneAndDouble(3)); // 8
4. Используйте литералы шаблонов
Литералы шаблонов — это мощная функция JavaScript, позволяющая создавать строки, которые могут содержать переменные и выражения. Это может помочь сделать ваш код более читабельным и удобным для сопровождения, а также повысить производительность за счет уменьшения объема кода, который необходимо написать. Примеры:
// Example 1
const name = “John”;
const message = Hello ${name}, welcome to our website!;
console.log(message); // "Hello John, welcome to our website!"
// Example 2
const name = "John";
console.log(`Hello, my name is ${name}`); // "Hello, my name is John"
// Example 3
const x = 5;
const y = 10;
console.log(`The sum of ${x} and ${y} is ${x + y}`); // "The sum of 5 and 10 is 15"
// Example 4
const myArray = [1, 2, 3];
console.log(`The first element in my array is ${myArray[0]}`); // "The first element in my array is 1"
5. Используйте асинхронность/ожидание
Async/await — это современный способ обработки асинхронного кода в JavaScript. Это делает ваш код более читабельным и менее подверженным ошибкам, а также может повысить производительность за счет уменьшения объема кода, который вам нужно написать. Вот некоторые примеры:
// Example 1
async function fetchData() {
const response = await fetch("https://jsonplaceholder.typicode.com/todos/1");
const data = await response.json();
console.log(data.title);
}
fetchData(); // "delectus aut autem"
// Example 2
const getData = async () => {
const response = await fetch("https://jsonplaceholder.typicode.com/posts");
const data = await response.json();
console.log(data);
};
getData();
// Example 3
const myFunction = async () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Hello World");
}, 2000);
});
};
myFunction().then((data) => console.log(data)); // "Hello World"
В примерах 1 и 2 мы используем метод «fetch» для извлечения данных из API, а ключевые слова «async» и «await» используются для обработки асинхронного характера метода «fetch». Это делает код более кратким и удобочитаемым, а также помогает повысить производительность за счет уменьшения объема кода, который необходимо написать. В то время как в примере 3 мы использовали обещание для разрешения значения «Hello World».
6. Используйте оператор спреда
Оператор распространения — еще одна мощная функция JavaScript, которая позволяет вам распространять элементы массива или объекта в новый массив или объект. Это может помочь сделать ваш код более кратким и читабельным, а также повысить производительность за счет уменьшения объема кода, который необходимо написать. См. примеры:
// Example 1
const myArray = [1, 2, 3];
const newArray = […myArray, 4, 5, 6];
console.log(newArray); // [1, 2, 3, 4, 5, 6]
// Example 2
const myObject = { name: "John", age: 30 };
const newObject = { ...myObject, occupation: "Developer" };
console.log(newObject); // { name: "John", age: 30, occupation: "Developer" }
// Example 3
const myArray1 = [1, 2, 3];
const myArray2 = [4, 5, 6];
const mergedArray = [...myArray1, ...myArray2];
console.log(mergedArray); // [1, 2, 3, 4, 5, 6]
7. Используйте тернарный и нулевой оператор
Тернарный оператор — это сокращенный способ написания условных операторов в JavaScript. Это способ написания одной строки кода для условного присвоения значения переменной или для выполнения одного из двух выражений на основе условия. Это может помочь сделать ваш код более кратким и читабельным, а также повысить производительность за счет уменьшения объема кода, который необходимо написать. Примеры:
// Example 1 const number = 5; const message = number > 10 ? "Number is greater than 10" : "Number is less than or equal to 10"; console.log(message); // "Number is less than or equal to 10" // Example 2 const isAdmin = true; const greeting = isAdmin ? "Welcome Admin" : "Welcome User"; console.log(greeting); // "Welcome Admin"
Нулевой оператор
Нулевой оператор, обозначаемый как ??, является логическим оператором в JavaScript, который предоставляет краткий способ проверки нулевых значений и предоставления значения по умолчанию, когда они существуют. Он похож на оператор ИЛИ (||), но возвращает второй операнд только в том случае, если первый операнд имеет значение null или не определен.
Вот примеры использования нулевого оператора в присваивании переменной:
// Example 1
const myValue = null;
const defaultValue = "default";
const result = myValue ?? defaultValue;
console.log(result); // "default"
// Example 2
function myFunction(myParam = "default") {
const result = myParam ?? "default";
console.log(result);
}
myFunction(); // "default"
myFunction(null); // "default"
myFunction("value"); // "value"
В этом примере мы используем нулевой оператор, чтобы присвоить значение "default" result, потому что myParam равно null или не определено. Если бы myParam или myValue имели значение 0 или false, вместо этого оператор вернул бы это значение.
8. Используйте сокращенную запись объекта
Сокращенная нотация объекта — это сокращенный способ создания объектов в JavaScript. Это может помочь сделать ваш код более кратким и читабельным, а также повысить производительность за счет уменьшения объема кода, который необходимо написать. Вот пример:
// Example 1
const name = "John";
const age = 30;
const myObject = { name, age };
console.log(myObject); // { name: "John", age: 30 }
// Example 2
const myFunction = (name, age) => {
return { name, age };
};
console.log(myFunction("John", 30)); // { name: "John", age: 30 }
// Example 3
const myObject1 = { name: "John", age: 30 };
const myObject2 = { ...myObject1, occupation: "Developer" };
console.log(myObject2); // { name: "John", age: 30, occupation: "Developer" }
9. Используйте дополнительную цепочку
Необязательная цепочка — это новая функция в JavaScript, которая позволяет вам получать доступ к свойствам объекта, не беспокоясь о том, является ли объект нулевым или неопределенным. Это особенно полезно, когда вы имеете дело с вложенными объектами или массивами. До введения необязательных цепочек, если вы хотели получить доступ к свойству объекта, которое может иметь значение null или быть неопределенным, вам приходилось использовать серию операторов if, чтобы проверить, существует ли каждый объект в цепочке, прежде чем получить доступ к его свойству. Это делало код длиннее и труднее для чтения.
С дополнительной цепочкой вы можете использовать «?» оператор, чтобы проверить, существует ли каждый объект в цепочке перед доступом к его свойству. Если какой-либо объект в цепочке имеет значение null или не определено, выражение возвращает значение undefined, а не выдает ошибку. Вот пример того, как вы можете использовать необязательную цепочку для доступа к свойствам вложенного объекта:
// Example 1
const myObject = {
name: "John",
address: {
street: "123 Main St",
city: "New York"
}
};
console.log(myObject?.address?.city); // "New York"
console.log(myObject?.address?.country); // undefined
// Example 2
const myArray = [1, 2, 3];
console.log(myArray?.[0]); // 1
console.log(myArray?.[10]); // undefined
// Example 3
const myFunction = (myObject) => {
console.log(myObject?.name?.toUpperCase());
};
myFunction(null); // undefined
myFunction({ name: "John" }); // "JOHN"
В примере 1 мы используем необязательную цепочку для доступа к свойствам «город» и «страна» объекта «адрес». Если объект «адрес» не существует или имеет значение null, выражение возвращает undefined вместо того, чтобы выдавать ошибку. В примере 2 перед доступом к нему проверяется, существует ли элемент, а в примере 3 свойство объекта проверяется перед выполнением над ним операции ToUpperCase.
Заключение
В заключение следует отметить, что JavaScript — это универсальный язык с широким спектром функций и инструментов, которые могут помочь вам писать более эффективный и удобный для сопровождения код. Используя такие функции, как строгий режим, деструктурирование, стрелочные функции, литералы шаблонов, async/await, операторы распространения, сокращенную запись объектов, тернарные и нулевые операторы и необязательное связывание, вы можете упростить свой код и сделать его более читабельным.
Как и в случае с любым другим языком, важно быть в курсе лучших практик и новых функций в JavaScript. Постоянно изучая и изучая язык, вы сможете полностью раскрыть его потенциал и вывести свои навыки на новый уровень.
Независимо от того, являетесь ли вы новичком или опытным разработчиком, применение этих советов и приемов поможет вам писать более чистый и эффективный код и улучшить общее качество ваших проектов JavaScript. Так что идите вперед и исследуйте мир JavaScript и посмотрите, какие скрытые сокровища вы можете открыть!
Спасибо за прочтение! 😊
Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Присоединяйтесь к нашему сообществу Discord и следите за нами в Twitter, LinkedIn и YouTube.
Узнайте, как привлечь внимание к своему стартапу с помощью Circuit.