Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
икт 90.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
474.21 Кб
Скачать

Основные понятия

Регулярное выражение (regular expression) — средство для обработки строк или последовательность символов, определяющее так называемый шаблон (pattern) текста.

Паттерн или образец (pattern) — задает правило поиска, также иногда называют шаблоном, маской.

Метасимволы или спецсимволы — операции специального синтаксиса использующегося при составлении шаблонов. Это так называемые команды регулярного выражения.

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

54. RegExp object, methods of an object RexExp and an object of String using the regular expressions

Конструктор RegExp создаёт объект регулярного выражения для сопоставления текста с шаблоном.

ОписаниеEdit

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

/ab+c/i;

new RegExp('ab+c', 'i');

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

Конструктор объекта регулярного выражения, например, new RegExp('ab+c'), обеспечивает компиляцию регулярного выражения во время выполнения. Используйте функцию-конструктор, если вы знаете, что шаблон регулярного выражения будет меняться или если вы не знаете шаблон и получаете его из внешних источников, например, из пользовательского ввода.

При использовании функции-конструктора необходимо использовать обычные правила экранирования в строках (предварять специальные символы символом обратного слеша «\»). Например, следующие выражения эквивалентны:

var re = /\w+/;

var re = new RegExp('\\w+')

55. DOM standart. DOM-levels. DOM-CORE INTERFACES.

Основные стандарты DOM имеют номера. Общая логика такова, что стандарт с большим номером дополняет стандарт с меньшим, по принципу наследования.

То есть, свойства и методы в более поздних стандартах дополняют описанные ранее с учетом обратной совместимости.

DOM Level 0

DOM Level 0 - это изначально появившийся интерфейс в древних браузерах Netscape, а за ним - в Internet Explorer, еще до возникновения института веб-стандартов. В нем содержатся некоторые примитивные методы и свойства.

DOM Level 0 не описан в каком-либо документе, но частично вошел в стандарт HTML 4.

DOM Level 1

В 1998 году появился стандарт DOM Level 1. Он описал программные интерфейсы для работы с XML в DOM Level 1 Core и для HTML в DOM Level 1 HTML.

Из DOM Level 1 взялись: document.forms, document.images, document.write.

DOM Level 2

В 2000 году появился стандарт DOM Level 2.

Состоит из следующих основных частей:

  • DOM2-Core описывает XML, включая основные понятия: Node, Document и пр. Этот стандарт бывает полезен изредка. Он поддерживается очень хорошо всеми браузерами.

  • DOM2-HTML расширяет Core для HTML/XHTML. При этом Document дополняется методами и свойствами до HTMLDocument, Node - до HTMLElement. Пожалуй, самый полезный стандарт, отлично освоенный браузерами.

  • Стандарт DOM2-Events описывает события W3C. Как известно, здесь много кросс-браузерных несовместимостей.

  • Стандарт DOM2-Style описывает работу с CSS: с файлами стилей Stylesheets и CSS-правилами. Поддерживается неплохо, однако некоторые несовместимости в браузерах все же есть.

  • Стандарт DOM2-Traversal-Range описывает DOM 2 Traversal - итераторы и фильтры для обхода документа, и DOM 2 Range - средства для выделения текста и DOM-узлов. Traversal браузеры только начинают осваивать, ну а Range хорошо поддерживается везде, кроме Internet Explorer.

DOM Level 3

Самое современное дополнение DOM. Этот пакет стандартов поддерживается очень слабо (2009 год).

Поддерживаются отдельные части DOM 3 Core, например DocumentFragment, и почти не поддерживается DOM 3 Xpath.

DOM 2 Core содержит два набора интерфейсов, каждый из которых обеспечивает полный доступ ко всем элементам документа. Первый набор представляет объектно-ориентированный подход со следующей иерархией наследования: документ — составляющие его элементы — их атрибуты и текстовое содержимое. При таком рассмотрении дерева документа мы говорим о иерархии объектов. Второй подход построен по принципу "все есть узлы (Nodes)". Здесь все составляющие документа рассматриваются как равноправные узлы его дерева, и мы можем говорить только о иерархии узлов. Таким образом, DOM 2 по своей сути является избыточной, но предоставляет нам возможность в зависимости от задачи рассматривать документ тем или иным способом.

56. DOM-Html interfaces

Среди всех интерфейсов DOM HTML, прежде всего, следует выделить интерфейс HTMLDocument, являющийся исходной точкой иерархии всех прочих объектов на странице. К нему относятся методы и свойства title, URL, body, links, images, forms, open, close, write и т.д. Помимо него, существует еще один общий интерфейс – HTMLElement, который определяет все основные атрибуты для HTML-элементов, а именно id, title, lang, dir и className. На его основе определено еще свыше 50 интерфейсов – свой для каждого тега, например, HTMLFormElement или HTMLTableElement. Все они, фактически, представляют собой оболочку для атрибутов соответствующего HTML-элемента. Например, интерфейс HTMLFontElement имеет атрибуты color, face и size, т.е. те же, что и у элемента FONT в языке HTML.

Очевидно, что, скажем, в документе типа HTML 4.0 Strict или XHTML 1.1 интерфейс HTMLFontElement использовать не следует, поскольку связанного с ним элемента FONT в таких документах быть не должно. В то же время, ряд других интерфейсов регулярно используются, упрощая написание сценариев. В первую очередь это относится к интерфейсам, представляющим элементы форм (хотя и тут не все однозначно: скажем, в XHTML 2 будут использоваться отличные от HTML формы «XFORMS»), а так же к доставшимся от DOM 0 массивам элементов. Действительно, будет несколько проще и нагляднее установить значение текстового поля формы, воспользовавшись свойством value, чем назначать значение атрибута VALUE средствами ядра DOM:

MyInput.value = "Строка"; // DOM HTML MyInput.setAttribute("value", "Строка"); // DOM Core

В то же время, для того, чтобы добраться до самого нужного элемента, методы ядра чаще оказываются более предпочтительными. Так, чтобы получить объект MyInput для примера выше, можно использовать один из следующих способов:

MyInput = document.forms["Form1"].elements["Input1"]; // DOM HTML MyInput = document.forms.Form1.Input1; // 2-й вариант DOM HTML MyInput = document.getElementById("Input1"); // DOM Core

Таким образом, вопрос стоит не в том, что надо использовать те или иные методы, а как правильно их сочетать для собственного удобства – с одной стороны, и для обеспечения максимальной совместимости – с другой. В данном случае было бы предпочтительно использовать метод ядра для выбора элемента, а для установки значения – метод HTML (опять-таки, более простая запись плюс отсутствие проблем с установкой атрибутов для INPUT в MSIE):

document.getElementById("Input1").value = "Строка";

В то же время, в данном случае вполне можно предпочесть и вариант «только HTML», т.е. все можно представить примерно такой строкой:

document.forms.Form1.Input1.value = "Строка";

Методы HTML,чаще всего и используются ввиду своей универсальности и простоты применения. Например, чтобы сослаться из одного элемента формы на другой элемент в этой же форме, достаточно указать только его имя (идентификатор):

<form> <input type="Text" id="Edit1" value="" /> <input type="Button" value="Жми!" onclick="Edit1.value='Новый текст'" /> </form>

Но бывают и такие случаи, когда методы HTML использовать нежелательно. Прежде всего, это касается случаев, когда по тем или иным причинам задействуются фирменные технологии браузеров. Для этого можно рассмотреть такой широко распространенный пример, как работа со слоями (абсолютно позиционированными блоками в современной терминологии).

В MSIE 4 слои, в принципе, ничем не отличаются от остальных элементов HTML уровня блока, и работать с ними можно через document.all. В Netscape 4 для слоев был предусмотренспециальный массив – document.layers, а в Netscape 6, 7 и Mozilla слои не имеют такой исключительности, и доступ к ним можно получить через функцию document.getElementById, как, впрочем, и в MSIE 5 и выше или в Opera. Поэтому, если требуется создать сценарий, который должен работать сразу со всеми версиями браузеров, придется предусмотреть три варианта. Например, для того, чтобы сделать некий слой «Layer1» невидимым, надо написать:

document.all.Layer1.visibility='hidden' //MSIE 4, подойдет и для MSIE 5/6 document.layers.Layer1.visibility='hidden' //для Netscape 4 document.getElementById('Layer1').visibility='hidden' //для новых браузеров

А теперь представьте, что вам придется создавать сразу три варианта программы! К счастью, используя объектную модель самого языка JavaScript, можно существенно упростить работу. Для этого достаточно один раз присвоить некоторой переменной ссылку на объект, и в дальнейшем уже работать со ссылкой, а не указывать каждый раз сам объект. Для этого можно создать функцию, которая проверяла бы браузер на наличие того или иного варианта определения объекта (т.е., скажем, имеется ли в браузере объект document.layers или document.all), и возвращала ссылку на нужный элемент в документе:

function GetLayer(id) { if (document.layers) { return document.layers[id]; // Netscape 4.x } else if (document.all) { return document.all(id); // MSIE, Opera } else { return document.getElementById(id); // Mozilla и др. } }

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

L1 = GetLayer("Layer1"); L1.style.left="400px";

57. Client Javascript. window object.

Вы можете использовать клиентскую библиотеку JavaScript для взаимодействия с Google API, таких как люди, календарь, и драйв, от ваших веб-приложений. Есть несколько способов использования клиентской библиотеки JavaScript для выполнения запросов API, но все они следуют той же базовой модели: 1.Приложение загружает клиентскую библиотеку JavaScript. 2.Приложение инициализирует библиотеку с ключом API, OAuth идентификатор клиента и Discovery API документа. 3.Приложение отправляет запрос и обрабатывает ответ.

Клиентская библиотека JavaScript работает с теми же браузеры, поддерживаемые Google Apps, за исключением того, что мобильные браузеры в настоящее время не поддерживается полностью. Он работает только в пределах HTML-документов с <body> с помощью HTTPS (привилегированные) и протоколы HTTP. Тем не менее, элементы <IFRAME sandbox> и другие ограниченные контексты выполненb. не поддерживаются.

Объект window сочетает два в одном: глобальный объект javascript и окно браузера.

Для обращения к функциям и методам window не нужно указывать объект:

window.decodeURI(..)

// то же что и

decodeURI(..)

Вообще, любая переменная в конечном счете(если не найдена локально) ищется в глобальном объекте.

// можно указать window явно - будет работать:

a = new window.String("test")

window является свойством window:

xhr = new window.window.window.XMLHttpRequest()

58.Event handling in browsers,three models of event handling. first and second models of event handling

  • Обработка событий Раньше процесс установки обработчиков событий для узлов дерева документа был довольно непоследовательным. Библиотеки вроде jQuery играли бесценную роль в абстрагировании от связанных с ним странностей. Чем больше мы приближаемся к соответствию стандартам со стороны браузерных окружений, тем более безопасным становится использование API из официальной спецификации. Чтобы не усложнять, я расскажу как можно управлять событиями именно в современном вебе. Если вы пишите код на JavaScript для Internet Explorer (IE) 8 или старше, рекомендую для управления обработкой событий использовать полифил или фреймворк (такой как jQuery).

  • event-name (название-события, строка). Это имя или тип события, которое вы хотите обработать. Им может быть любое стандартное событие DOM (click, mousedown , touchstart, transitionEnd и т.д.) или же имя вашего пользовательского события ( о пользовательских событиях мы поговорим позже). callback (обработчик, функция). Эта функция вызывается когда происходит событие. Объект event, содержащий информацию о событии, присваивается в качестве первого параметра.

59.Third model of event handling. DOM Event standard three phases of event bubbling, eventtarget interface

  • DOM (от англ. Document Object Model — «объектная модель документа») — это не зависящий от платформы и языка программный интерфейс, позволяющий программам и скриптам получить доступ к содержимому HTML-, XHTML- и XML-документов, а также изменять содержимое, структуру и оформление таких документов. Модель DOM не накладывает ограничений на структуру документа. Любой документ известной структуры с помощью DOM может быть представлен в виде дерева узлов, каждый узел которого представляет собой элемент, атрибут, текстовый, графический или любой другой объект. Узлы связаны между собой отношениями «родительский-дочерний». Изначально различные браузеры имели собственные модели документов (DOM), несовместимые с остальными. Для обеспечения взаимной и обратной совместимости, специалисты международного консорциума W3C классифицировали эту модель по уровням, для каждого из которых была создана своя спецификация. Все эти спецификации объединены в общую группу, носящую название «W3C DOM». Ещё один интерфейс прикладного программирования, называемый «JDOM», обеспечивает более высокий, чем «W3C DOM», уровень для работы с XML-документами на Java.

  • use-capture (перехват, булево значение). Оно объявляет должен ли обработчик события вызываться в фазе «перехвата». (Не беспокойтесь, я объясню что это значит немного позже) var element = document.getElementById('element'); function callback() { alert('Привет'); }

  • EventTarget - это интерфейс, реализуемый объектами, которые могут генерировать события и могут иметь подписчиков на эти события. Наиболее частые генераторы событий - Element, document, и window, но другие объекты так же могут использоваться в качестве источников событий , например XMLHttpRequest, AudioNode, AudioContext, и другие. Многие источники событий (включая элементы, документ и окно) также поддерживают установку обработчиков событий с помощью on... свойств и аттрибутов.

60.Event object in the DOM Event standard.

В объекте события содержится подробнейшая информация о том, что и где произошло.

Тип события можно получить, используя кроссбраузерное свойство type объекта событие.

Объект событие всегда передается обработчику и содержит массу полезной информации о том где и какое событие произошло.

Способов передачи этого объекта обработчику существует ровно два, и они зависят от способа его установки и от браузера.

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

Например, для события по клику мыши (onclick), свойство event.target(в IE event.srcElement) содержит DOM-элемент, на котором этот клик произошел.

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

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

Рассмотрим ситуацию, когда у вас есть три элемента "вложенных" друг в друга.

1

2

3

1

<div class="d1" >1<!-- самый верхний, в представлении DOM, элемент -->

2

    <div class="d2">2

3

        <div class="d3">3</div><!-- самый глубокий элемент -->

4

    </div>

5

</div>

61-ответ

Event MSIE model

A mechanism whereby MSIE and Netscape 6.0 pass events up a hierarchy of objects until they find a handler.

Event bubbling was introduced in version 4.0 of MSIE and provides a structured and hierarchical way of handling events. This is somewhat more object oriented in its approach than that provided by the Event Management suite in Netscape prior to version 6.

Functionally, this is very similar to the event hierarchy model found in HyperCard. Other hyper-linking and event driven systems have modelled their event handling on this same technique since it became popularized in HyperCard in 1987.

The event bubbling technique hands an event to the most specific object relating to the event, such as the object representing an HTML tag. If there is no handler, the event is passed up the document object tree until a handler that matches is found or until it is established without doubt that there is no handler.

Handlers are able to consume an event and terminate the event handling process for that event or they may choose to pass the event upwards to a parent object. This is very sub-class, super-class like behavior and is again borrowed from the HyperCard and Object Oriented prototypes.

Event bubbling has been selected as a candidate for standardization, since it is a fundamentally more useful and automated way to propagate events through the DOM. DOM level 2 documents describing an MSIE-like event model have been published and the relevant topics are included here because that event model is supported by Netscape version 6. The event model is expected to be enhanced a little at DOM level 3 when that standard matures.

62-ответ

Язык JavaScript. Assignment. Use method.

JavaScript обычно используется как встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам[7].

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

На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при этом лёгким для использования непрограммистами. Языком JavaScript не владеет какая-либо компания или организация, что отличает его от ряда языков программирования, используемых в веб-разработке[~ 1][8].

Название «JavaScript» является зарегистрированным товарным знаком компании Oracle Corporation[9].

JavaScript является объектно-ориентированным языком, но используемое в языке прототипирование[34][35] обуславливает отличия в работе с объектами по сравнению с традиционными класс-ориентированными языками. Кроме того, JavaScript имеет ряд свойств, присущих функциональным языкам — функции как объекты первого класса, объекты как списки, карринг, анонимные функции, замыкания[36] — что придаёт языку дополнительную гибкость.

Несмотря на схожий с Си синтаксис, JavaScript по сравнению с языком Си имеет коренные отличия:

• объекты, с возможностью интроспекции;

• функции как объекты первого класса;

• автоматическое приведение типов;

• автоматическая сборка мусора;

• анонимные функции.

В языке отсутствуют такие полезные вещи[37], как:

• модульная система: JavaScript не предоставляет возможности управлять зависимостями и изоляцией областей видимости;

• стандартная библиотека: в частности, отсутствует интерфейс программирования приложений по работе с файловой системой, управлению потоками ввода-вывода, базовых типов для бинарных данных;

• стандартные интерфейсы к веб-серверам и базам данных;

• система управления пакетами[~ 2], которая бы отслеживала зависимости и автоматически устанавливала их.

63-ответ

Implementation of Java

script in HTML. To describle all available methods

Javascript подключается напрямую в HTML-файл. Самый простой способ - это написать javascript-команды внутрь тега <script> где-нибудь в теле страницы.

Подключение в любом месте

Когда браузер читает HTML-страничку, и видит <script> - он первым делом читает и выполняет код, а только потом продолжает читать страницу дальше.

Так, в следующем примере будет показано начало страницы, затем три раза выполнится функция alert, которая выводит окошко с информацией, а только потом появится остальная часть страницы.

HTML - это язык гипертекстовой разметки текста;

CSS - каскадные стили таблиц, с помощью него применяют стиль к определенному элементу HTML, или группе элементов;

PHP - серверный язык программирования/скриптования;

JavaScript - клиентский язык программирования/скриптования;

Практический пример:

1) Файл index.html

<!-- Тег HTML, с него начинается страница -->

<html>

<head>

<title>Заголовок страницы</title>

<!-- Подключаем JavaScript'овый скрипт с названием current_script.js -->

<script type='text/javascript' src='current_script.js'></script>

<!-- Подключаем main.css -->

<link rel='StyleSheet' type='text/css' href='main.css' />

</head>

<body>

<div id='form_A'>

<form action='user_checking.php' method='POST'>

<input type='text' value='Имя' name='first_name' class='field' size='10' /><br />

<input type='text' value='Фамилия' name='last_name' class='field' size='15' /><br />

<br />

<!-- Кнопка отправки данных формы на сервер -->

<input type='submit' value='Проверить' class='button' name='check_button'

onmouseover="check_fields('first_name', 'last_name'); " />

</form>

</div>

</body>

</html>

Язык сценариев JavaScript является объектно-ориентированным. Объекты JavaScript представляют собой наборы свойств и методов. Свойства объектов - это данные, связанные с объектом, а методы - функции для обработки данных объекта. Адресация свойств в сценариях JavaScript возможна либо по именам свойств, либо по их номеру. Последнее возможно благодаря тому, что все свойства объекта хранятся как элементы массива и потому каждое свойство имеет свой номер.

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

Как работать со встроенными объектами? Достаточно просто. Программа создает реализации объектов, а затем обращается к свойствам и методам объектов. В качестве примера, имеющего практическое значение, рассмотрим документ HTML, в котором отображается текущая дата и время.

64-ответ

Идентификатор - последовательность символов и цифр, служащая для обозначения переменных, новых имен типов и т.п. Допустимыми символами являются: 'A'-'Z', 'a'-'z','_', '0'-'9'. Цифра не может быть первым символом. В отличие от С++, фигурные скобки (т.е. блок) определяют не столько область видимости, сколько время жизни идентификатора. Например, следующий код будет ошибочен, но если закомментировать первую строку, ошибки не будет.

int a; // без этой строки ошибки не будет.

{

int a=0;

a++;

}

{

int a=10;

a--;

}

Идентификатор не может совпадать с ключевым словом или ли-тералами. Ниже приведен список ключевых слов Java.

abstract continue for new switch

assert default if package synchronized

boolean do goto private this

break double implements protected throw

byte else import public throws

case enum instanceof return transient

catch extends int short try

char final interface static void

class finally long strictfp volatile

const float native super while

Слова const и goto зарезервированы и не используются.

КЛЮЧЕВЫЕ СЛОВА ЯЗЫКА JAVA

abstract continue for new switch

assert default goto* package synchronized

boolean do if private this

break double implements protected throw

byte else import public throws

case enum instanceof return transient

catch extends int short try

char final interface static void

class finally long strictfp volatile

const* float native super while

* зарезервированное слово, не используется

Литералы:

• true

• false

• null

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

65-ответ

Literals and JavaScript operators. To write a code, to make explanation.

Операторы сравнения

Описание, примеры

Операндами операторов сравнения могут быть численные и строковые значения. Строки сравниваются, исходя из стандартного лексикографического порядка при использовании Unicode.

Яваскрипт допускает как строгое сравнение, так и сравнение с приведением типов. Для строгого сравнения оба операнда должны иметь одинаковый тип и:

• Две строки строго равны, если состоят из одинаковой последовательности символов

• Два числа строго равны, если равны в обычном смысле слова. +0 строго равен -0.

• NaN строго не равно ничему, включая NaN

• Два булевых операнда строго равны, если они оба true или false

• Два операнда-объекта строго равны, если являются ссылками на один и тот же общий объект

• Null и Undefined равны ==, но не строго равны ===

Следующая таблица описывает операторы сравнения:

Оператор Описание Примеры, возвращающие true при var1=3, var2=4

Равно (==) Если два операнда не одного типа, javascript преобразовывает типы и сравнивает строго. Если какой-либо операнд - число или булево значение, то операнды преобразуются в числа; если какой-либо операнд строка - второй преобразуются в строку 3 == var1

"3" == var1

3 == '3'

Не равно (!=) Возвращает true, если операнды не равны. Если операнды имеют разный тип, javascript преобразовывает. var1 != 4

var1 != "5"

Строго равно (===) Возвращает true, если операнды строго равны (см. выше), без преобразования типов. 3 === var1

Строго не равно (!==) Возвращает true, если операнды не являются строго равными (см. выше) или имеют разные типы. var2 !== 3

3 !== '3'

Больше (>) Возвращает true, если левый операнд больше правого. var2 > var1

Больше или равно (>=) Возвращает true, если левый операнд больше правого или равен ему. var2 >= var1

var1 >= 3

Меньше (<) Возвращает true, если левый операнд меньше правого. var1 < var2

Меньше или равно (<=) Возвращает true, если левый операнд меньше правого или равен ему. var1 <= var2

var2 <= 5

Использование операторов сравнения

Стандартные операторы равенства (== и !=) сравнивают два операнда безотносительно их типа. Строгое равенство (=== и !==) производит сравнения операндов одинакового типа. Используйте строгое равенство, если операнды должны иметь одинаковый тип и значение. В ином случае, используйте обычные операторы равенства, которые позволяют проверить равенство операндов, даже если они разного типа.

При конвертации типов яваскрипт преобразует String, Number, Boolean и Object следующим образом:

• При сравнении числа и строки, строка преобразуется в числовое значение. Яваскрипт при этом получает значение числа из строкового литерала: "123" == 123.

• Если один из операндов - булевый, то он преобразуется к 1, если он true и к +0, если он false

• Если объект сравнивается с числом или строкой, яваскрипт пытается получить соответствующее значение для объекта. Он преобразует объект к элементарному значению, строке или числу, используя методы valueOf и toString. Если преобразовать объект не удается - генерируется ошибка выполнения.

66. Declaration of variables in JavaScript. Data types. To show the sizes,a method of programming check.

(Объявление переменных в JavaScript)

Имена переменных JavaScript, так же как в языках Pascal и C, могут содержать латинские буквы, цифры и знаки подчеркивания и начинаться или с буквы, или со знака подчеркивания. Но при объявлении переменной, в отличии от этих языков, тип переменной не указывается. Переменная принимает тип тех данных, которые ей присваиваются. Поэтому в разное время переменная может иметь разный тип данных. Язык JavaScript относится к языкам программирования с динамической типизацией переменных.

Объявить переменную можно одним из следующих способов:

  • с помощью оператора var, например, var a,b;

  • с помощью оператора var с присвоением значения переменной, например, var a,b="It's a cat";

  • при присвоении значения переменной, например, a=1.8E-1; С=042;

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

Для локальных переменных, т.е. таких, которые объявлены внутри описания функций, использование при объявлении переменной оператора var приведет к тому, что переменная становится недоступной для всей программы, за исключением области описания функции. Если локальная переменная объявлена путем присвоения ей значения без использования оператора var, она будет доступна для всей программы.

Литералы, переменные или функции, соедененные знаками операций, являются выражением в языке JavaScript, например, a-C+6.13.

Тип переменной (или в общем случае выражения) можно определить с помощью оператора typeof (допускается и его форма в виде функции typeof()). Для переменных целого и вещественного типов оператор typeof; возвратит значение number, для переменной строкового типа - string, для переменной логического типа - boolean, для переменной, которая не имеет значения или не объявлена - null.

Если переменная типа string в начале строки содержит символы, которые представляют целое или вешественное число, например, a=0xAAWWW; или b='1.43e1cats'; то с помощью функций parseInt() или parseFloat можно преобразовать тип переменной соответственно в целый или вещественный тип. Например, функция parseFloat(b) вернет значение 14.

Типы данных JavaScript условно можно разделить на две группы: простые данные и сложные данные. К простым данным можно отнести: числа, строки, логические значения, значение null, значения undefined. К сложным данным относятся: JavaScript  функции, JavaScript объекты, JavaScript массивы, объекты Date JavaScript, регулярные выражения JavaScript, объекты Error JavaScript.

JavaScript данные делятся на три типа. Первый тип данных JavaScript – элементарный тип данных, к нему относятся числа, строки и значения логической истинности (true и false).

Второй тип данных JavaScript – тривиальные типы данных, к тривиальным данным JavaScript относятся два значения null и undefined.

Третий тип данных JavaScript – составной тип данных JavaScript или иначе его называют объект JavaScript. Эти названия равносильны и вы их можете встретить в литературе или на сайтах посвященных языку JavaScript. Любой объект JavaScript представляет собой набор значений, значения могут быть различным и различно упорядоченными. Обычно в JavaScript набор таких значений называют коллекция JavaScript или коллекция значений JavaScript.

JavaScript коллекции могут состоять из простых значений, таких как строки или числа, а могут состоять и из составных значений, например, из других объектов. JavaScript объекты делятся на две большие группы – JavaScript массивы и JavaScript объекты.

Массивы JavaScript – представляются как упорядоченная коллекция значений, в которой все элементы коллекций пронумерованы. Хотя в языке JavaScript вы и не сможете создать двумерный массив (матрицу) напрямую, вы можете создать массив, в котором каждый элемент массива будет являться массивом.