Operators¶
Логические¶
// или
||
// и
&&
// не
!
Битовые¶
var a = 5;
var b = 13;
a | b;
// OR, 13
a & b;
// AND, 5
a ^ b;
// XOR, 8
~a;
// NOT, -6
a >> b;
// RIGHT SHIFT, 0
a << b:
// LEFT SHIFT, 40960
a >>> b;
// ZERO FILLED RIGHT SHIFT, 0
Бинарные¶
'Hello' + 'GoIt';
// HelloGoIT
'1' + 2;
// '12'
2 + '1'
// '21'
'1' - 2
// '-1'
6 / '2'
// '3'
+1
// 1
+(1-2);
// -1
+'2' + +'3';
// 5
Условия¶
if (){}
else if () {}
else () {}
(age == 18) ? alert('Большой'): alert('Маленький')
var a = 1;
switch(a) {
case 1:
console.log('one');
break;
case 0:
console.log('zero');
break;
default:
console.log('not one zero')
}
Циклы¶
for (var i=0, max = myarray.length; i < max; i++){}
// итерация по ключам объекта
for (attr in {}) {}
// итерация по значениям списка
for (let prop of [12, 13, 14]){}
var i = 0;
while (i < 5) {
console.log(i);
i++;
}
do {} while (...)
Note
EcmaScript6
// обход значений итерируемого объекта
function* gf(){
yield 1;
yield 2;
}
for (let value of gf()){}
// обход значений итерируемого объекта
for (let value of [1, 2, 3]){
...
}
Исключения¶
if (typeof a !== 'number' || typeof b !== 'number') {
throw {
name: 'TypeError',
message: 'add needs numbers'
};
// throw 'error text';
// throw 123;
// throw new Error("message");
}
try {
// код который вызывает исключение
} catche (e) {
// перехват исключений
} finally {
// данный блок выполнится в любом случае
}
Оператор расширения¶
Note
EcmaScript6
function some(a, b){
return a + b;
};
var data = [1, 4];
some(...data);
let array1 = [2, 3, 4];
let array2 = [1, ...array1, 5, 6, 7];
// 1, 2, 3, 4, 5, 6, 7
break¶
Прерывает работу циклов
continue¶
Перейти к новой итерации цикла
in¶
Проверка существования свойства в объекте, по всей цепочке прототипов
console.log('x' in point);
// true
instanceof¶
Проверяет тип объекта
function Human(){
if (! (this instanceof Human)) {
return new Human();
}
}
let¶
Note
EcmaScript6
Объявление переменных с областью видимости в пределах блока и возможностью инициализации их значений
Отличие от var:
переменная доступна только внутри блока
переменную повторно нельзя объявить в той области видимости
function some() {
if (true){
// переменная доступная только в условии
let a = 5;
}
}
typeof¶
Тип объекта
typeof undefined;
// "undefined"
typeof 0;
// "number"
typeof true;
// "boolean"
typeof "foo";
// "string"
typeof {};
// "object"
typeof null;
// "object"
typeof function(){};
// "function"
var¶
Объявляет переменную, доступную внутри области видимости функции
yield, yield*¶
Note
EcmaScript6
Приостанавливает функцию и возвращает значение
yield* - принимает итерируемый объект и выполняет итерации по нему
function* generator_function(){
yield 1;
yield 2;
}
var generator = generator_function()
generator.next().value
// 1
generator.next().value
// 2
function* gf1(){
yield 2;
yield 3;
}
function* gf2(){
yield 1;
yield* gf1();
yield* [4, 5];
}
var g = gf2();
g.next().value;
// 1
g.next().value;
// 2
g.next().value;
// 3
g.next().value;
// 4
g.next().value;
// 5