English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основы JavaScript

Объекты JavaScript

Функции JavaScript

JS HTML DOM

JS браузер BOM

Основы AJAX

Руководство по JavaScript

Частые ошибки JavaScript

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

Неожиданное использование оператора присваивания

Если мы不小心 используем оператор присваивания (=) вместо оператора сравнения (==) в if-операторе, JavaScript-программа может дать неожиданные результаты.

Если num не равно 20, то этот if-оператор возвращает false:

var num = 0;
if (num == 20)
Тестировать, посмотреть‹/›

Этот if-оператор возвращает true, потому что 20 равно true:

var num = 0;
if (num = 20)
Тестировать, посмотреть‹/›

Ассигнование всегда возвращает значение, которое было передано.

Использование "==" вместо "==="

Когда люди начинают использовать JavaScript, это, возможно, самая распространенная ошибка.

В обычном сравнении данные типа не важны. Если if-оператор возвращает true:

var a = 20;
var b = "20";
if (a == b)
Тестировать, посмотреть‹/›

В строгом сравнении данные типа действительно важны. Этот if-оператор возвращает false:

var a = 20;
var b = "20";
if (a === b)
Тестировать, посмотреть‹/›

Разница между (a == b) и (a === b):

  • == если a равно b, то возвращает true

  • === если a равно b и они都属于Одного типа, то возвращает true

Обычно, вы всегда должны использовать ===, также известный как строгий оператор равенства или оператор идентичности.

Загадочные сложение и сопряжение

Из предыдущих глав можно узнать, что оператор + используется для сложения и сопряжения.

Кроме тогоявляется очисел.

сопряженииявляется оСтрока.

Таким образом, добавление числа в качестве числа и добавление числа в качестве строки приводит к различным результатам:

var a = 10;
var b = 5;
var c = a + b; // c = 15
var a = 10;
var b = "5";
var c = a + b; // c = "105"
Тестировать, посмотреть‹/›

Ошибка использования float

Все числа в JavaScript хранятся как 64-битные плавающие точки (Floats).

Все языки программирования (включая JavaScript) имеют трудности с точными значениями плавающей точки:

var a = 0.1;
var b = 0.2;
var c = a + b;   // результат c не будет 0.3
Тестировать, посмотреть‹/›

Чтобы решить эту проблему, поможет умножение и деление:

var c = (a * 10 + b * 10) / 10; // c = 0.3
Тестировать, посмотреть‹/›

Перенос строки в строке JavaScript

JavaScript позволяет вам разбить предложение на две строки:

var str =
"w3codebox Tutorial";
Тестировать, посмотреть‹/›

Но, прерывание предложения в середине строки не подействует:

var str = "w3codebox
Tutorial";
Тестировать, посмотреть‹/›

Если необходимо прервать предложение в строке, то необходимо использовать « 反slash杠(эскейп-символ):

var str = "w3codebox \
Tutorial";
Тестировать, посмотреть‹/›

    Другим решением является использованиеШаблонные строки(反引号``)字符串。Эти они устраняют необходимость в escaping длинных строк:

var str = `Air Pollution is introduction of chemicals to the
atmosphere. It damages environmental balance and causes
several diseases.`;
Тестировать, посмотреть‹/›

Пункт с запятой установлен неправильно

Из-за неправильного放置 точки с запятой, выполняется следующая команда независимо от значения num:

if (num === 45);
{
  // code block  
}
Тестировать, посмотреть‹/›

Определение, заканчивающееся запятой

Запятая в конце определения объекта и массива является законной в ECMAScript 5.

let fruits = ["Apple", "Mango", "Banana", "Orange",];//массив
let user = {firstName:"Vishal", lastName:"Choudhary", age:22,};//объект

Однако, добавление запятой в конце массива вызовет крушение Internet Explorer 8.

JSON не допускает следующие запятые.

Блочная область видимости

JavaScript не создает новый диапазон для каждого блока кода.

Это применимо во многих языках программирования, но не в JavaScript.

for (var i = 0; i < 10; i++) {
  // some code
}
document.write(i); // Что выйдет?
Тестировать, посмотреть‹/›

ИспользованиеletКлючевые слова создают новый диапазон для каждого блока кода:

for (let i = 0; i < 10; i++) {
  // some code
}
document.write(i); // Что выйдет?
Тестировать, посмотреть‹/›

Разница между null и undefined

undefinedЗначение indicates что переменная не имеет значения, или переменная не была объявлена.

nullЗначение indicates что故意不存在任何对象 значения.

Это делает тестирование того, является ли объект пустым, несколько сложным.

можно проверить, является ли типundefinedчтобы проверить наличие объекта:

if (typeof myObj === "undefined")
Тестировать, посмотреть‹/›

    но вы не можете проверить, является ли объектnullпоскольку, если объектundefinedэто приведет к возникновению ошибки:

Чтобы решить эту проблему, необходимо проверить, является ли объект неundefinedи неnull:

if (typeof myObj !== "undefined" && myObj !== null)
Тестировать, посмотреть‹/›