Краткое описание доклада
Записанные непосредственно в коде данные. As is.
true // Булево значение "истина"
2 // Число "два"
'Привет, мир!' // строка "Привет, мир"
Имя: состоит из букв UTF-16 и знаков _
, $
.
Не может начинаться с цифры и быть зарезервированным словом.
_name_of_my_$cat // Правильно
return // Ошибка
Цель: выполнить действие
let name
name
Цель: выполнить действие
do {} while ()
Цель: получить результат
2 + 2
()
группировка выражений: (2 + 2) * 3
+
, -
, *
, /
, =
математика.
Получение свойства: person.name
[ ]
Получение свойства с вычислением: person[getName()]
===
, >
, <
Равенство, соотношение=
, +=
, -=
Присваивание,
Оператор запятаяlet four = 2 + 2;
// => let возвращает undefined
four;
// выражение "получить значение переменной",
// результат число 4
let x = 1;
x += 20; У "=" самый низкий приоритет
x += 20;
x + 20
x =
2 + 2 // => 4
'2' + 2 // => '22'
+'42' // => 42
+('42a') // => NaN
слева направо: 1 => 2 => 3 => ...
2 - 2 - 2 // => -2
2 - 2 = 0
0 - 2 = -2
0 == false
false
конвертируется в число 0
'0' == false
'0'
конвертируется в число 0
false
конвертируется в число 0
true === "boolean" // => true
true.constructor // => Boolean
false.toString() // => Строка "false"
false + "" == false // => ?
false
2
2.3
0.1 + 0.2 = 0.30000000000000004
4..__proto__ // Number
const PI = 'π'
'It can\'t be a quote'
"Привет,мир".length
=> 10 let name = 'Alex';
name[1] = 'b';
name // =>'Alex'
undefined, null, NaN
typeof undefined
=> "undefined"
typeof null
=> "object"
typeof NaN
=> "number"
NaN === NaN
=> false
new Object({ name: 'Alex' });
{ name: 'Alex' }; // Литерал объекта
person.__proto__
let alexPerson = {name: 'Alex'}
let mikePerson = alexPerson;
mikePerson.name = 'Mike';
alexPerson.name // => 'Mike'
Standard built-in objects (Стандартная_библиотека)
{name: 'Alex', hobbies: ['js'] }
[1, 2, 'three', {name: 'Alex'}, [1]]
Объект со скрытым полем [[Call]]
let getName = function() {};
function getName() {};
let getName = () => {}
let person = ({name: 'Alex'});
let name = getName(person);
[1, 2, 3, 4].forEach(item => {});
/** @return {Function} */
function personGetter() {
let person = { name: 'Alex' };
return function () { return person; }
}
personGetter()().name;
let getName = function() {
return this.name;
}
getName.apply({name: 'Alex'})