<!-- Begin to hide script contents from old browsers.
JavaScript statements...
// End the hiding here. -->
</script>
Объявление скрипта во внешних файлах:
<HEAD>
<TITLE>My Page</TITLE>
<script SRC="common.js">
...
</SCRIPT>
</HEAD>
<BODY>
..
Необходимые для начала функции:
console.log(“что то”);
alert(“some text”);
document.write(“some text”);
Типы значений:
Строгой типизации нет.
Основные типы это:
Числа (специальные числовые значения Infinity (бесконечность) и NaN (ошибка вычислений). Они также принадлежат типу number)
Логические (да/нет)
Строки
null (не является «ссылкой на несуществующий объект» или «нулевым указателем». Это специальное значение, которое имеет смысл «ничего» или «значение неизвестно».)
undefined. Обычно появляется если переменная объявлена, но в неё ничего не записано)
Приведение типов (learn.javascript.ru/types-conversion).
Cтроковое преобразование String(val) или оператор "+", у которого один из аргументов строка.
Числовое преобразование. Number(val), либо оператор унарный плюс "+". Вызывается при сравнении данных различных типов (кроме сравнений ===, !==)
Преобразование к логическому значению. Boolean(value) или двойное логическое отрицание !!value
Все значения, которые интуитивно «пусты», становятся false. Их несколько: 0, пустая строка, null, undefined и NaN. Остальное, в том числе и любые объекты — true. Т.е. пустой объект или массив тоже true.
Например,
alert( [] == [] ); // falseт.к. Два объекта равны только тогда, когда это один и тот же объект.
alert( [] == ![] ); // trueт.к. '!' преобразует аргумент к логическому типу. Массив является объектом, так что это true Т.е. ![] = !true = false потом проверка равенства между объектом [] и примитивом вызывает численное преобразование объекта-массива в строку. ПУСТУЮ строку!!! Потому получили '' == false. А теперь сравнение различных типов вызывает численное преобразование слева и справа: 0=0
Переменные:
Два способа объявления:
var i = 0;
x = i+5;// без var мы неявно объявляем глобальную переменную х, где-бы её не объявили
Пример объявления и реализации функции:
function f1() {
return y - 2;
}
f1(); // runtime error
var f2=function () {
var y;
return y - 2;
}
f2(); //вернет NaN
function f1(x) {
return x + 1; }
var f2 = function(x) {
return x + 1; }
К обеим этим функциям мы можем обратиться одинаково:
alert(f1(5));
alert(f2(5));
Замыкания и анонимные функции:
Новая область видимости переменных в JavaScript возникает только в одном единственном случае – при объявлении функции. Таким образом, если в функции объявить переменную, то ее имя не перекроется с таким же именем, но объявленным в глобальном контексте.
var a = 5;
function f1(){
var a = 10; // переменная a = 10 объявлена в другом контексте видимости
alert(a); // Выведет 10 n
}
f1();
alert(a); // Выведет 5
При добавлении своего кода на чужую страницу (или чужого кода на свою страницу) есть опасность, то практически всегда в нем мы будем объявлять создание своих функций и своих новых переменных. А создаваться они будут в контексте загруженной пользователем страницы, где до нас уже могут существовать какие-либо переменные и функции. Понятно, что мы никак не можем предугадать, какие имена будут у этих переменных, а значит, создавая свои собственные, мы можем случайно переопределить уже существующие переменные, внеся тем самым непредсказуемые изменения в логику работы пользовательских скриптов. Таким образом, добавив свой код, помимо его полезной работы, мы можем получить и совершенно непредсказуемые побочные явления, связанные с перопределением переменных.
Поэтому лучше всегда будем использовать анонимные функции – они обеспечивают гарантию от побочных явлений за счет добавления всего 17 лишних символов скрипта (function(){тут ВАШ код})(); а весь код встраивается между фигурными скобками.
Объявление анонимной функции:
Анонимные функции определяются также как и именованные, за исключением того факта, что им не присваивается имя.
function(x) {
alert(x); }
Однако, если ее просто объявить, то толку от нее не будет никакого. Чтобы от любой функции была польза – ее надо вызвать. Вызов анонимной функции всегда совмещен с ее объявлением.
Для этого полностью все объявление функции берется в круглые скобки, после которого также в круглых скобках приписываются все ее аргументы вызова:
(function(x) {
alert(x);
})(5);
Для функции без аргументов:
(function() {
alert('Я функция!');
})();
Объекты (www.ibm.com/developerworks/ru/library/wa-oojavascript/): www.puzzleweb.ru/javascript/14_objects.php
var Sales = "Toyota";
car = {myCar: "Saturn", getCar: "Honda", special: Sales}
document.write(car.myCar); // Saturn
при удалении свойства его значение не просто устанавливается в значение undefined, оператор delete действительно удаляет свойство из объекта.
delete – удаление объекта
new – создание объекта
this – указывает на текущий объект
typeof – возвращает тип объекта
Строки:
"one line \n another line"
‘one line \n another line’
Операторы:
Арифметические
Сравнения.
Точное сравнение - === (равны значения и равны типы)
Точное «не равно» - !== (не равны по значению и/или не равны по типу)
Логические - && (и), || (или), ! (не)
Специальные:
Запятая , разделяет выражения.
тернарный оператор: condition ? val1 : val2;
void – выражение после (или внутри) этого оператора вычислится без возврата значения.
Пример:
<A href="javascript:void(0)">Click here to do nothing</A>
Выражения:
Основной смысл: выражение – это некоторый правильный набор литералов, переменных, операторов и выражений, который вычисляет одно значение – число, строку или логическое значение.
Выражения: условные, циклов, манипуляции с объектами, комментарии
Условные: if…else
if (condition) {
statements1
}
else {
statements2
}
switch:
switch (expression){
case label1 :
statement;
break;
case label2:
statement;
break;
default :
statement;
}
Циклы: for(…;…;…){} , do…while, while:
for ([initialExpression]; [condition]; [incrementExpression]) {
statements
}
do {
statement
} while (condition)
while (condition) {
statements
}
for…in :
for (variable in object) {
statements }
Комментарии:
// This is a single-line comment.
/* This is a multiple-line comment. It can be of any length, and
you can put whatever you want here. */
http://www.w3schools.com/
События, cookie-файлы и таймеры http://www.ibm.com/developerworks/ru/library/wa-javascriptstart2/index.html
Атрибут onClick может использоваться в следующих тегах HTML:
Операторы языка JavaScript, заданные в атрибуте onClick, выполняются при щелчке мыши на таких объектах как гиперсвязь, кнопка перезагрузки формы или контрольный переключатель. Для контрольных переключателей и селекторных кнопок событие Click возникает не только при выборе элемента, но и при разблокировании.
Разберем пример использования атрибута onClick для кнопок, определенных тегами <input type="button"> в контейнере <form> . . . </form>:
Код HTML
1234567891011121314
<script language="JavaScript"><!--function but1() {alert("Вы нажали первую кнопку");}function but2() {alert("Вы нажали вторую кнопку");}//--></script><form><input type="button" value="Первая кнопка" onClick="but1()"><input type="button" value="Вторая кнопка" onClick="but2()"></form>
Когда пользователь щелкает мышью по кнопке, вызывается либо функция but1(), либо but2(). При этом с помощью метода alert() на экран выводится соответствующее сообщение. (я часто применяю метод alert() так, как с помощью его очень удобно демонстрировать работу той или иной программы)
Разберем использование события onClick например для контрольных переключателей. Обработка этого события здесь выполняется как при включении, так и при выключении контрольных переключателей. Для проверки состояния переключателей следует использовать свойство checked, которое содержит значение true, если переключатель включен. Рассмотрим пример:
после передачи значения this.form.c1 или this.form.c2 в соответствующие функции. Проверяется свойство checked контрольного переключателя, переданного функции, и в зависимости от значения свойства checked срабатывает метод alert().
Обычно подобный подход применяется для сложного ввода каких-то данных, и в зависимости от установленного "флажка" предлагается заполнять соответствующие поля форм или переместить фокус в одно из полей, так как данные отслеживаются еще при вводе текущей формы.