x = 1; // число
x = "Тест"; // строка, кавычки могут быть одинарные или двойные
x = true; // булево значение true/false
x = null; // спец. значение (само себе тип)
x = undefined; // спец. значение (само себе тип)
var vegetable = { name: "Буряк", qty: 2 };
"Примитивные"
Объекты
var str = "Мама мыла раму";
str = 'Одинарные кавычки тоже подойдут';
var visitorName = promt('Как вас зовут?', "Буряк");
В JavaScript одинарные и двойные кавычки равноправны.
Можно использовать или те или другие.
'one string ' + ' another string'
Объединение строк еще называется конкатенация
var name = "Dave";
var message = "Hello " + name;
Если хотя бы один аргумент является строкой, то второй будет также преобразован к строке!
alert( '1' + 2 ); // "12"
alert( 2 + '1' ); // "21"
var visitorName = promt('Как вас зовут?', 'Буряк');
var message = "Привет " + visitorName + '. Добро пожаловать на урок по JavaScript. ' + 'Рад наблюдать за твоими успехами';
message = message + '...';
message += "...."
var n = 123;
n = 12.345;
alert(12345 / 0); // Infinity
alert(-1 / 0); // -Infinity
Ошибка вычислений NaN будет результатом некорректной математической операции
alert( "нечисло" * 2 ); // NaN, ошибка
Infinity (бесконечность)
var iLoveBorsch = true;
var iDontLoveBorsch = false;
У него всего два значения:
true (истина) и false (ложь).
var age = null;
Значение неизвестно
var x;
alert( x ); // выведет "undefined"
Значение не присвоено
var vegetable = { name: "Буряк", qty: 2 };
var message = "Нам нужны овощи: ";
message += vegetable.name;
message += ", в количестве: ";
message += vegetable.qty;
message += " штук.";
document.write(message);
Он используется для коллекций данных и для объявления более сложных сущностей.
typeof undefined // "undefined"
typeof 0 // "number"
typeof true // "boolean"
typeof "foo" // "string"
typeof {} // "object"
typeof null // "object" (1)
typeof function(){} // "function" (2)
var x = 1;
x = -x;
alert( x ); // -1, применили унарный минус
var x = 1, y = 3;
alert( y - x ); // 2, бинарный минус
Operator | Name | Purpose | Example |
---|---|---|---|
+ |
Addition | Adds two numbers together. | 6 + 9 |
- |
Subtraction | Subtracts the right number from the left. | 20 - 15 |
* |
Multiplication | Multiplies two numbers together. | 3 * 7 |
/ |
Division | Divides the left number by the by right. | 10 / 5 |
% |
Remainder (sometimes called modulo) |
Returns the remainder left over after you've shared the left number out into a number of integer portions equal to the right number. |
8 % 3 (returns 2, as three goes into 8 twice, leaving 2 left over.) |
Все любят математику! :)
Постфиксность
var i = 2;
i++;
alert(i) //3
i--;
alert(i) //2
Префиксность.
var i = 1;
alert( 2 * ++i ); // 4
Инкремент/декремент можно использовать в любых выражениях
var i = 2;
++i;
alert(i) //3
--i;
alert(i) //2
Постфиксная форма i++ отличается от префиксной ++i тем, что возвращает старое значение, бывшее до увеличения.
var n = 2;
n = n + 5;
n = n * 2;
var n = 2;
n += 5; // теперь n=7 (работает как n = n + 5)
n *= 2; // теперь n=14 (работает как n = n * 2)
alert( n ); // 14
var a = (5, 6);
alert( a );
// три операции в одной строке
for (a = 1, b = 3, c = a*b; a < 10; a++) {
...
}
Запятая позволяет перечислять выражения, разделяя их запятой ','. Каждое из них – вычисляется и отбрасывается, за исключением последнего, которое возвращается.
alert( 'Б' > 'А' ); // true
'a'.charCodeAt(0); //97
При сравнении значений разных типов, используется числовое преобразование. Оно применяется к обоим значениям.
'2' > 1; // true, сравнивается как 2 > 1
'01' == 1; // true, сравнивается как 1 == 1
false == 0; // true, false становится числом 0
true == 1; // true, так как true становится числом 1.
Для проверки равенства без преобразования типов используются операторы строгого равенства
=== (тройное равно) и !==.
0 === false; // false, т.к. типы различны
null > 0; // false undefined > 0; // false
null == 0; // false undefined < 0; // false
null >= 0; // true undefined == 0; // false
Значение undefined вообще нельзя сравнивать:
alert( undefined > 0 ); // false (1)
alert( undefined < 0 ); // false (2)
alert( undefined == 0 ); // false (3)
Оператор if (...) вычисляет и преобразует выражение в скобках к логическому типу.
В логическом контексте:
Число 0, пустая строка "", null и undefined, а также NaN являются false,
Остальные значения — true.
Неверное условие, else
Необязательный блок else («иначе») выполняется, если условие неверно
var year = prompt('В каком году появилась спецификация ECMA-262 5.1?', '');
if (year != 2011) alert( 'А вот и неправильно!' );
Бывает нужно проверить несколько вариантов условия. Для этого используется блок else if.
JavaScript сначала проверит первое условие, если оно ложно — перейдет ко второму — и так далее, до последнего else.
var year = 2015;
if (year < 2015) {
alert('Это слишком рано...');
} else if (year > 2015) {
alert('Это поздновато...');
} else {
alert('OK!');
}
Вопросительный знак — единственный оператор, у которого есть аж три аргумента, в то время как у обычных операторов их один-два. Поэтому его называют «тернарный оператор».
Последовательность операторов '?' позволяет вернуть значение в зависимости не от одного условия, а от нескольких.
var count = 2;
var text = count == 1 ? 'Apple' : 'Apples';
Для операций над логическими значениями в JavaScript есть:
|| (ИЛИ), && (И) и ! (НЕ).
|| (ИЛИ)
Оператор ИЛИ вычисляет ровно столько значений, сколько необходимо — до первого true.
&& (И)
При этом оператор ИЛИ возвращает то значение, на котором остановились вычисления. Причём, не преобразованное к логическому типу.
И возвращает true, если оба аргумента истинны, а иначе — false
! (НЕ)
Сначала приводит аргумент к логическому типу true/false.
Затем возвращает противоположное значение.
Приоритет оператора И && больше, чем ИЛИ ||, так что он выполняется раньше.
alert( 5 || 1 && 0 ); // 5
Всего есть три преобразования:
Строковое преобразование происходит, когда требуется представление чего-либо в виде строки.
В случае сложения, если один из аргументов строка, второй аргумент преобразовывается в строку.
alert( true + "test" ); // "truetest"
alert( "123" + undefined ); // "123undefined"
alert( String(null) === "null" ); // true
Значение
undefined
null
true / false
Строка
Преобразуется в…
NaN
0
1 / 0
Пробельные символы по краям обрезаются. Далее, если остаётся пустая строка, то 0, иначе из непустой строки «считывается» число, при ошибке результат NaN.
var a = +"123"; // 123
var a = Number("123"); // 123, тот же эффект
Значение
undefined, null
Числа
Строки
Объекты
Преобразуется в…
false
Все true, кроме 0, NaN — false.
Все true, кроме пустой строки "" — false
Всегда true
Boolean(null); // false
Boolean("string"); // false
В JavaScript есть три преобразования:
Конструкция switch заменяет собой сразу несколько if.
switch (a) {
case 2:
case 3:
doSomething();
break;
case 4:
doSomethingElse();
break;
default:
alert('Я таких значений не знаю');
break;
}
var i = 0;
while (i < 3) {
alert( i );
i++;
}
var i = 0;
do {
alert( i );
i++;
} while (i < 3);
var i;
for (i = 0; i < 3; i++) {
alert( i );
}
var sum = 0;
var value = 0;
while (true) {
if (!value) break;
sum += value;
}
for (var i = 0; i < 10; i++) {
if (i % 2 == 0) continue;
alert(i);
}
Все значения в JavaScript, за исключением null и undefined, содержат набор вспомогательных функций и значений, доступных «через точку».
Такие функции называют «методами», а значения — «свойствами». Здесь мы рассмотрим основы использования свойств и методов.
// Строки
var str = 'Hello world!';
alert(str.length); // 12
alert(str.toUpperCase()); // "HELLO WORLD!"
// Числа
var n = 12.345;
alert(n.toFixed(2)); // "12.35"
alert(n.toFixed(0)); // "12"
alert(n.toFixed(5)); // "12.34500"
alert(12.toFixed(1)); // ошибка!
alert(12..toFixed(1)); // 12.0
// Спец. символ - перенос на новую строку
alert('Привет\nМир'); /* выведет "Мир"
на новой строке */
// Экранирование специальных символов
var str = 'I\'m a JavaScript programmer';
var str = "I'm a JavaScript \"programmer\" ";
var str = ' символ \\ '; // символ \
// Длина и доступ к символам
var str = "jQuery";
alert(str.length); // 6
alert(str.charAt(0)); // "j"
alert(str[0]); // "j"
// Смена регистра
alert('Javascript'.toUpperCase()); // JAVASCRIPT
alert('USSR'.toLowerCase()); // ussr
// Поиск подстроки
alert(str.indexOf("j") ); // 0
alert(str.indexOf("Query") ); // 1
alert(str.indexOf("query") ); // -1
var string = 'check it out';
alert(string.substring(1)); // 'heck it out'
alert(string.substring(0, 3)); // 'che'
alert(string.substr(1)); // 'heck it out'
alert(string.substr(0, 3)); // 'che'
substr(start [, length]) - аналогично, только второй параметр не коне, а количество символов.
alert(0xFF); // 255 в шестнадцатиричной системе
alert(010); // 8 в восьмеричной системе
// еще пример научной формы: 3 с 5 нулями
alert(3e5); // 300000
// здесь 3 сдвинуто 5 раз вправо, за десятичную точку.
alert(3e-5); /* 0.00003 <-- 5 нулей,
включая начальный ноль */
alert(12345 / 0); // Infinity
alert(Infinity > 1234567890); // true
alert(Infinity + 5 == Infinity); // true
alert(-1 / 0); // -Infinity
alert(0 / 0); // NaN
alert(NaN == NaN); // false
alert(NaN === NaN); // false
var n = 0 / 0;
alert(isNaN(n)); // true
// Забавный способ проверки на NaN
alert(n !== n) // true
alert(+"12"); // 12
alert(+"12test"); // NaN
alert(+" -12"); // -12
alert(+" \n34 \n"); /* 34, перевод строки \n
является пробельным символом */
alert(+""); // 0, пустая строка становится нулем
alert(+"1 2"); // NaN, пробел посередине числа - ошибка
alert("12.34" / "-2"); // -6.17
alert(parseInt('12px')); // 12
alert(parseFloat('12.3.4')) /* 12.3, ошибка
на второй точке */
alert(parseInt('a123')); // NaN
Функция parseInt и ее аналог parseFloat преобразуют строку символ за символом, пока это возможно.
alert(Math.floor(3.1)); // 3
alert(Math.ceil(3.1)); // 4
alert(Math.round(3.1)); // 3
alert(Math.round(3.5)); // 4
Math.floor
Округляет вниз
Math.ceil
Округляет вверх
Math.round
Округляет до ближайшего целого
var n = 9.34;
alert( n.toFixed(1) ); // "9.3"
var n = 13.36;
alert( n.toFixed(1) ); // "13.4"
var n = 8.24;
alert( n.toFixed(5) ); // "8.24000", добавлены нули до 5 знаков после запятой
Math.sqrt(x) Возвращает квадратный корень из x.
Math.log(x) Возвращает натуральный (по основанию e) логарифм x.
Math.pow(x, exp) Возводит число в степень, возвращает xexp, например Math.pow(2,3) = 8. Работает в том числе с дробными и отрицательными степенями, например: Math.pow(4, -1/2) = 0.5.
Math.abs(x) Возвращает абсолютное значение числа
Math.exp(x) Возвращает ex, где e – основание натуральных логарифмов.
Math.max(a, b, c...) Возвращает наибольший из списка аргументов
Math.min(a, b, c...) Возвращает наименьший из списка аргументов
Math.random() Возвращает псевдо-случайное число в интервале [0,1) – то есть между 0(включительно) и 1(не включая). Генератор случайных чисел инициализуется текущим временем.