JavaScript. Подробное руководство, 6-е издание (Флэнаган) - страница 46


>var a=['a>,,>,b>,,'c’]; // Копируемый массив

>var b = []; // Массив, куда выполняется копирование

>for(var і = 0; і < a.length; i++) { // Для каждого элемента в массиве а[]

>  b[і] = а[і]; // Скопировать элемент а[] в b[]

>}


Точно так же, если потребуется сравнить два отдельных объекта или массива, необходимо будет сравнить значения их свойств или элементов. Ниже приводится определение функции, сравнивающей два массива:


>function equalArrays(a, b) {

>  if (a.length != b.length) return false; // Массивы разной длины не равны

>  for(var і = 0; і < a.length; і++) // Цикл по всем элементам

>    if (а[і] !== b[i]) return false; // Если хоть один элемент

>                // отличается, массивы не равны

>  return true;  // Иначе они равны

>}


3.8. Преобразование типов

JavaScript может гибко преобразовывать один тип в другой. Мы уже могли убедиться в этом на примере логических значений: везде, где интерпретатор JavaScript ожидает получить логическое значение, можно указать значение любого типа и JavaScript автоматически выполнит необходимое преобразование. Одни значения («истинные» значения) преобразуются в значение >true, а другие («ложные») - в >false. То же относится и к другим типам: если интерпретатор ожидает получить строку, он автоматически преобразует любое другое значение в строку. Если интерпретатор ожидает получить число, он попробует преобразовать имеющееся значение в число (в случае невозможности такого преобразования будет получено значение >NaN). Например:


>10 + " objects" // => "10 objects". Число 10 преобразуется в строку

>"7" * "4" // => 28: обе строки преобразуются в числа

>var n = 1 - "x"; // => NaN: строка "x" не может быть преобразована в число

>n + " objects" // => "NaN objects": NaN преобразуется в строку "NaN"


В табл. 3.2 описывается, как в JavaScript выполняется преобразование значений из одного типа в другой. Жирным шрифтом в таблице выделены значения, соответствующие преобразованиям, которые могут преподносить сюрпризы. Пустые ячейки соответствуют ситуациям, когда преобразование не требуется и не выполняется.

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