Подводные камни JavaScript

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

Именование

Допустимые имена в JavaScript начинаются с буквы или некоторого символа, могут содержать буквы, цифры, подчеркивание и символы. Имена не могут начинаться с цифры и не могут включать в себя дефис. За исключением этих правил вы можете именовать свои переменные как захотите! Все эти имена корректны:

  • a
  • a1
  • foo_bar
  • fooBarBaz
  • $fooBar
  • _foo
  • __foo__

Есть некоторые соглашения, которых придерживаются люди при именовании в JavaScript, но они не являются обязательными и не оказывают никакого эффекта на работу кода:

как правило, имена, начинающиеся с _ «приватные» (подробнее об этом дальше); имена, начинающиеся с заглавных букв, обычно являются «конструкторами» и применяются для создания новых экземпляров объектов (подробнее об этом дальше); в коде с jQuery имена, которые начинаются с $, относятся, как правило, к объектам jQuery.

Зарезервированные слова

JavaScript резервирует определённые слова для собственного использования. Вы должны избегать этих слов в качестве имён.

abstract boolean break byte case catch char class const continue debugger
default delete do double else enum export extends false final finally float
for function goto if implements import in instanceof int interface long
native new null package private protected public return short static super
switch synchronized this throw throws transient true try typeof var
volatile void while with

Если вам требуется одно из этих имён в качестве свойства объекта, имя следует взять в кавычки:

var myObject = {
  'class': 'tasty'
};

Операции над числами и строками

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

console.log( 0.0001 + 0.0002 ); // 0.00030000000000000003

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

JavaScript является слабо типизированным языком. Если вы попытаетесь провести математические операции используя не цифровые значения, JavaScript не станет кидаться ошибками, но результат может оказаться не тем что вы ожидали.

console.log( 'a' + 2 );           // 'a2'
console.log( '4' + 3 );           // '43'
console.log( 'five' - '4' );      // NaN (not a number, не число)
console.log( - '1' );             // -1
console.log( 1 + true );          // 2
console.log( 1 == true );         // true
console.log( 1 === true );        // false

Дальнейшее чтение

Мы рассмотрели JavaScript только в общих чертах. Mozilla Developer Network является превосходным ресурсом с информацией о языке JavaScript, в частности, их руководство по JavaScript. Особенно вам следует прочитать следующие статьи:

Автор: Ребекка Мёрфи
Последнее изменение: 27.02.2024