Примітивні |
||
---|---|---|
1. Число: | ||
document.write(1005) | - записано у вигляді константи | |
document.write(10 + 0.5) | - записано у вигляді сумми констант | |
document.write(a1) | - записано за допомогою змінної а1 | |
document.write(2/0); | - нескінченність теж число | |
2. Рядок | ||
document.write("10 + 0.5") | - записано в подвійных лапках | |
document.write('10 + 0.5') | - записано в одинарних лапках | |
document.write(a2) | - записано за допомогою змінної а2 | |
document.write("10 " + "+ 0.5") | - записано у вигляді суми двох рядків | |
3. Логічні: | ||
document.write(10 > 0.5); | - записано в найпростішому вигляді | |
document.write(Boolean(10 > 0.5)); | - записано за допомогою функиції Boolean() | |
document.write(Boolean(-15)+"; "+Boolean("false")); | - будь-яке значення відмінне від 0 має логічне значення true | |
document.write(Boolean(-0)); | - значеня false мають: false; 0; -0; ""; undefined; null; NaN | |
document.write(2 < "12"); | - при порівнянні рядка та числа JavaScript буде перетворювати рядок на числове значення | |
document.write("2" < "12"); | - "2" не менше "12", тому що в алфавітній послідовності 1 менше 2 | |
document.write(0 == "John"); | - не числовий рядок перетворюється на значення NaN | |
(12 < 2) ? "да" : "нэт" | - yмовний (тернарний) оператор: true -> "так", false -> "ні" | |
Нехай var x = false, var y = new Boolean(false), var z = new Boolean(false) | ||
document.write(x == y); | - при використанні оператора порівняння == однакові значення типу Boolean рівні | |
x === y | - не рівні, тому що оператор === очікує збігу як за значенням, так і за типом | |
y == z | - Порівняння двох об'єктів JavaScript завжди повертає false | |
4. Функція. По суті це константне значення | ||
document.getElementById("temp1").innerHTML = toCelsius; | - виклик функції без скобок | |
document.getElementById("temp2").innerHTML = toCelsius(); | - виклик функції зі скобками | |
var temperature = toCelsius(40); var itIs = "The temperature is " + temperature + "F"; document.getElementById("temp3").innerHTML = itIs; |
- виклик функції як значення змінної | |
ECMAScript 6 (2015) | ||
function myFunction(x, y = 10) { return x + y;} myFunction(5); |
- y дорівнює 10 якщо не передано значення або undefined | |
const x = (x, y = 10) => x + y; | - "стрілочні" функції надають короткий запис для виразів-функцій; якщо функція складається з більш ніж одного виразу, потрібні фігурні дужки | |
const x = (x, y) => {return x + y}; | - гарною звичкою буде писати так | |
5. null | ||
6. undefined |
Змінні |
||
---|---|---|
1. Змінні | ||
var x = 10.05; document.write(x); |
- привласнення значення змінній | |
2. Об'єкт | ||
var object = { firstName: "Ivan", lastName: "Ivanov" fullName : function(){ return this.firstName + " " + this.lastName; } }; document.write(object.firstName + " " + object.lastName); |
- створення об'єкта за допомогою об'єктного літералу | |
var object = new Object(); object.firstName = "Ivan"; object.lastName = "Ivanov"; |
- створення об'єкта за допомогою ключового слова new | |
var x = object; x.firstName = "Petro"; document.write(object.firstName); |
- Об'єкт x це не копія об'єкта object. Це і об'єкт object. І x, і object – один і той самий об'єкт | |
object.firstName | - звернення до елементів об'єкта; - доступ до властивостей объекта |
|
object["lastName"] | ||
object.firstName + " " + object.lastName | - Властивість об'єкта - це пари "ім'я:значення" | |
object.fullName() | - Метод об'єкта - це функція, записана як властивість об'єкта;
- це дії, які можна виконати з об'єктами |
|
ECMAScript 5 (2009) Нехай var person = {firstName: "Ivan", lastName: "Ivanov", language: "NO"} |
||
Object.create(){ firstName: "Ivan", lastName : "Ivanov" } |
- створення об'єкта за допомогою функції | |
get fullName(){ return this.firstName + " " + this.lastName; } |
- створення в об'єкті геттера з ім'ям fullName | |
set lang(value){ this.language = value.toUpperCase(); } |
- створення в об'єкті сеттера з ім'ям lang, який допомагає ставити одну з властивостей цього об'єкта | |
get lang() { return this.language; }, set lang(value) { this.language = value; } |
- створення в об'єкті сеттера та геттера з ім'ям lang | |
Object.defineProperty(person, "language", { value: "EN", writable : true}); |
- визначення властивості об'єкта та/або зміна значення властивості та/або його метаданих | |
Object.getOwnPropertyDescriptor(person, "language") | - доступ до властивостей | |
Object.getPrototypeOf(person) | - доступ до прототипу | |
Object.getOwnPropertyNames(person) | - повертає всі властивості у вигляді масиву | |
Object.keys(person) | - - повертає всі перераховані властивості у вигляді масиву |
Перетворення типів JavaScript | ||
---|---|---|
В рядок | ||
document.write(String(123)+"; "+typeof(String(123))); | - перетворює в рядок константу 123 | |
String(100+23) | - перетворює в рядок результат виразу | |
String(x) | - перетворює в рядок числову змінну x | |
В число | ||
Number("3.14") | - перетворює рядок, що містить числа, в число | |
Number("99 88"); Number(" ") | - перетворює рядок, який містить нечислові символи або який порожній, на число | |
Number(true) | - перетворення логічних значень у числа | |
Number(new Date()) | - перетворення значення дати (тип Date) у числа |
Арифметика JavaScript |
||
---|---|---|
document.write(4 + 6 + 0.5) | - сума чисел | |
document.write("4 +" + " 6 +" + ' 0.5') | - сума рядків | |
document.write(4 + " + 6 +" + ' 0.5') | - сума чисел і рядків | |
document.write(a1 + " + " + a2 + " + " + a3) | - сума змінних | |
document.write(a1 + " + " + a2 + " + " + a3) | - більш точна сума чисел із плаваючою комою | |
document.write(b1!==b2); document.write(b1==b2) | - порівняння | |
ECMAScript 6 (2015) | ||
document.write(5 ** 2) | - Оператор зведення в ступінь; дає той же результат, що і використання методу Math.pow(x,y) |
Побітові операції 5 = 0101; 1 = 0001 |
|||
---|---|---|---|
& | - побітове "і" - повертає 1, яущо обидва біти дорівнюють 1 | ||
| | - побітове "або" - повертає 1, якщо хоча б один іх двох бітів дорівнює 1 | ||
^ | - виключне "і" - повертає 1, якщо тільки один із двох бітів дорівнює 1, але не обидва | ||
~ | - побітове "ні" - інвертує всі біти | ||
<< | - зрушення вліво із заповненням молодших (праворуч) бітів нулями | ||
>> | - зсув праворуч з копіюванням знака (арифметичний зсув праворуч); порожні біти заповнюються копією крайнього лівого біта | ||
>>> | - зсув вправо із заповненням старших (ліворуч) бітів нулями |
Оператори JavaScript | ||
---|---|---|
- Арифметичні | ||
- Логічні | ||
- Побітові | ||
- Присвоєння | ||
- Порівняння | ||
Оператори типів |
||
typeof(6) | - тип = число | |
typeof('a') | - тип = рядок | |
typeof(object) | - тип = об'єкт | |
typeof(true) | - тип = логічний | |
typeof(function myFunc(){}) | - тип = функція | |
typeof(em) | - у невизначеної змінної тип = undefined | |
typeof(null) | - у "null" тип = об'єкт | |
typeof(Infinity) | - у нескінченності тип = число | |
typeof(NaN) | - NaN теж число | |
typeof(new String()) | - у рядків, масивів та іншого, що створене за допомогою "new", тип = об'єкт | |
"John".constructor | - повертає функцію-конструктор у всіх змінних JavaScript | |
(3.14).constructor | ||
false.constructor | ||
[0,1,2].constructor | ||
{name:"John", age: 34}.constructor | ||
new Date().constructor | ||
function(){}.constructor | ||
instanceof(d) | - instanceof | |
ECMAScript 6 (2025) | ||
isFinite(Infinity); isFinite(-0.5) | - повертає false, якщо його параметр має тип Infinity чи NaN | |
isNaN("Hello"); isNaN(5); isNaN("5") | - повертає true, якщо параметр має тип NaN |
ECMAScript 5 (2009). Строгий режим | ||
---|---|---|
"use strict"; x = 3.14; document.write(typeof(x)); |
- декларування строгого режиму; у строгому режимі недекларовані змінні не створюються автоматично | |
x = 3.14; function myFunc(){ "use strict"; y = 3.14; } document.write(typeof(x) + "; " + typeof(y)); |
- декларування строгого режиму усередині блоку |