JavaScript, динамический язык программирования, который вдохнет жизнь в ваш сайт. Это везде и не зря. Это важно для веб-разработки и предлагает универсальную, гибкую среду, которая может сделать веб-страницы интерактивными и привлекательными. Но с властью приходит ответственность, и есть определенные ловушки, с которыми часто сталкиваются разработчики JavaScript. Давайте прольем свет на десять самых распространенных ошибок и, что более важно, на то, как их избежать.

Путаница с равенством

Распространенной ошибкой в ​​JavaScript является различие между свободным равенством (`==`) и строгим равенством (`===`). Нестрогое равенство сравнивает только значения, а строгое равенство проверяет значение и тип. Эта тонкость может быть разницей между ошибкой и работающей программой.

// bad
if (1 == "1") // This is true

// good
if (1 === "1") // This is false

Если вы хотите продолжать читать мои оригинальные статьи, вы можете продолжать читать их в моем блоге и подписаться! https://adiryad.com

Непонимание

«Объявлено вверху, а написано внизу?» Добро пожаловать в феномен подъема JavaScript! Объявления (не инициализации) перемещаются в верхнюю часть текущей области, поведение, которое может привести к некоторым головокружительным моментам. Будьте в курсе и держите свои переменные в правильном порядке.

console.log(hello()) // Hello World
console.log(myName) // undefined
console.log(notExistingVar) // ReferenceError: x is not defined

var myName = 'Adir Yad';

function hello() {
    return 'Hello World';
}

Я могу написать полную статью только о подъеме, но нам нужно двигаться дальше.

Неправильные ссылки на «это»

Неуловимое ключевое слово «this» в JavaScript изменяет свою ссылку в зависимости от контекста, в котором вызывается функция, а не от того, где она определена. Это скользкий путь, но понимание правил «этого» может превратить его в мощного союзника.

function Car() {
  console.log(this);
}

Car(); // Window (global object)
new Car(); // Car object

Нулевой и неопределенный

Null и undefined — две стороны медали JavaScript. Они могут показаться однояйцевыми близнецами, но в языке они используются по-разному. Помните, что «undefined» означает, что переменная была объявлена, но не определена, а «null» — это значение присваивания, которое не представляет ни значения, ни объекта.

let myVar;
console.log(myVar); // undefined

myVar = null;
console.log(myVar); // null

Буквальные лазейки

Литералы массивов и объектов более эффективны и менее подвержены ошибкам, чем их аналоги-конструкторы. Используйте литералы для более чистого и управляемого кода.

// bad
const badArray = new Array();

// good
const goodArray = [];

Анонимные аномалии

Анонимные функции невероятно удобны, но могут затруднить отладку, если ими злоупотреблять. Баланс является ключевым.

setTimeout(() => console.log('Hello after 2 seconds'), 2000);

Прототипы

Незнание прототипов в языке, основанном на прототипах? Это ловушка! Понимание прототипов и модели наследования на основе прототипов является ключом к написанию эффективного и безошибочного JavaScript.

function Car(make, model) {
  this.make = make;
  this.model = model;
}

Car.prototype.getDetails = function() {
  return `${this.make} ${this.model}`;
}

const car = new Car('Mercedes', 'A-Class');
car.getDetails() // Mercedes A-Class

Функции

В JavaScript функции могут быть определены несколькими способами, каждый из которых имеет свои уникальные особенности. Непонимание этого может привести к непреднамеренным ошибкам в вашем коде.

// function declaration
function add(x, y) {
  return x + y;
}

// function expression
const add = function(x, y) {
  return x + y;
};

// arrow function
const add = (x, y) => x + y;

Изменчивые ошибки

В JavaScript объекты передаются по ссылке, а не по значению. Это может привести к неожиданным побочным эффектам, если вы не будете осторожны.

const car1 = {
    make: 'Toyota',
    model: 'Camry'
};
const car2 = car1;

car2.model = 'Corolla';
console.log(car1.model); // Corolla

Исключительные ошибки

Неправильный перехват и обработка исключений может привести к ошибкам, которые трудно отследить, и плохому взаимодействию с пользователем. Важно включить в свой код обработку ошибок, чтобы корректно справляться с такими ситуациями.

try {
  // potentially error-causing code
} catch (error) {
  console.log('An error occurred: ', error);
}

В заключение

Не пугайтесь этих подводных камней. При наличии осознанности и терпения они станут ступеньками на вашем пути к освоению JavaScript. Помните, настоящий рост как разработчика часто происходит, когда мы учимся на своих ошибках, а иногда и на ошибках других. Примите аномалии JavaScript, и пусть он сделает вас лучшим разработчиком.

Спасибо за прочтение, я надеюсь, что эта статья хоть как-то вам поможет! Вы можете показать мне свою любовь, подписавшись и присоединившись к моему списку рассылки!