[ico20]: https://github.com/garevna/js-course/blob/master/ico/a-level-20.png [ico25]: https://github.com/garevna/js-course/blob/master/ico/a-level-25.png [ico50]: https://github.com/garevna/js-course/blob/master/ico/a-level-30.png [hw-20]: https://github.com/garevna/js-course/blob/master/ico/briefcase-20.png [hw-30]: https://github.com/garevna/js-course/blob/master/ico/briefcase-30.png [hw-40]: https://github.com/garevna/js-course/blob/master/ico/briefcase-40.png [cap-20]: https://github.com/garevna/js-course/blob/master/ico/coffee-20.png [cap-25]: https://github.com/garevna/js-course/blob/master/ico/coffee-20.png [cap-30]: https://github.com/garevna/js-course/blob/master/ico/coffee-20.png [cap-40]: https://github.com/garevna/js-course/blob/master/ico/coffee-20.png [warn-25]: https://github.com/garevna/js-course/blob/master/ico/warning.png [warn-30]: https://github.com/garevna/js-course/blob/master/ico/warning.png [warn-40]: https://github.com/garevna/js-course/blob/master/ico/warning.png [link-20]: https://github.com/garevna/js-course/blob/master/ico/link-20.png [link-25]: https://github.com/garevna/js-course/blob/master/ico/link-25.png [err-20]: https://github.com/garevna/js-course/blob/master/ico/no_entry-20.png [err-25]: https://github.com/garevna/js-course/blob/master/ico/no_entry-25.png [err-30]: https://github.com/garevna/js-course/blob/master/ico/no_entry-30.png [file-20]: https://github.com/garevna/js-course/blob/master/ico/pencil-20.png [file-25]: https://github.com/garevna/js-course/blob/master/ico/pencil-25.png [file-30]: https://github.com/garevna/js-course/blob/master/ico/pencil-30.png [dir-20]: https://github.com/garevna/js-course/blob/master/ico/folder-20.png [dir-25]: https://github.com/garevna/js-course/blob/master/ico/folder-25.png [dir-30]: https://github.com/garevna/js-course/blob/master/ico/folder-30.png [dir-40]: https://github.com/garevna/js-course/blob/master/ico/folder-40.png [bash-20]: https://github.com/garevna/js-course/blob/master/ico/bash-20.png [bash-25]: https://github.com/garevna/js-course/blob/master/ico/bash-25.png [bash-30]: https://github.com/garevna/js-course/blob/master/ico/bash-30.png [bash-40]: https://github.com/garevna/js-course/blob/master/ico/bash-40.png [git-20]: https://github.com/garevna/js-course/blob/master/ico/github-20.png [git-25]: https://github.com/garevna/js-course/blob/master/ico/github-25.png [git-30]: https://github.com/garevna/js-course/blob/master/ico/github-30.png [wink-20]: https://github.com/garevna/js-course/blob/master/ico/wink-20.png [wink-25]: https://github.com/garevna/js-course/blob/master/ico/wink-25.png [wink-30]: https://github.com/garevna/js-course/blob/master/ico/wink-30.png [point-20]: https://github.com/garevna/js-course/blob/master/ico//point_up-20.png [point-25]: https://github.com/garevna/js-course/blob/master/ico/point_up-25.png [point-30]: https://github.com/garevna/js-course/blob/master/ico/point_up-30.png [ok-20]: https://github.com/garevna/js-course/blob/master/ico/ok-20.png [ok-25]: https://github.com/garevna/js-course/blob/master/ico/ok-25.png [ok-30]: https://github.com/garevna/js-course/blob/master/ico/ok-30.png [super-20]: https://github.com/garevna/js-course/blob/master/ico/super-20.png [super-25]: https://github.com/garevna/js-course/blob/master/ico/super-25.png [super-30]: https://github.com/garevna/js-course/blob/master/ico/super-30.png [debagger]: https://github.com/garevna/js-course/blob/master/ico/debag-paused.png "Resume script execution F8 Ctrl+\" [reload]: https://github.com/garevna/js-course/blob/master/ico/reload.png [file-20]: https://github.com/garevna/js-course/blob/master/ico/pencil-20.png [yt-20]: https://github.com/garevna/js-course/blob/master/ico/youtube.png # ![ico25] [Переменные. Типы данных](var) ## ![ico20] Оператор _typeof_ Оператор `typeof` возвращает строку Возможные значения, возвращаемые оператором `typeof`: * `string` * `number` * `boolean` * `object` * `undefined` * `function` * `symbol` ![cap-20] Наберите в консоли: ```javascript var x = 10 typeof x // "number" ``` А теперь выполните код в консоли: ```javascript x = "google" typeof x // "string" ``` Теперь выполните в консоли следующий код: ```javascript var x = false typeof typeof x // "boolean" ``` _____________________________________________________________ ## ![ico25] string Строки состоят из символов и заворачиваются в двойные ( *"мама"* ) или одинарные ( *'мама'* ) кавычки Также можно завернуть строку в обратные кавычки **` ` `** ```javascript var sample = `This is a sample` ``` Если внутри строки встречаются двойные кавычки, то сама строка должна быть завернута в одинарные, и наоброт ![cap-20] ```javascript var first = 'Капитаном корабля "Наутилус" был Немо' var second = "Капитаном корабля 'Наутилус' был Немо" var third = `Капитаном корабля "Наутилус" был Немо` ``` _____________________________________________________________ ## ![ico25] number Число может быть: * целым ( 5 ) * с плавающей точкой ( 5.80 ) * [**`Infinity`**](NaN-null-Infinity.md#infinity) ( бесконечность ) * [**`NaN`**](NaN-null-Infinity.md#NaN) ( Not a Number - не число ) ![warn-25] Значение [**`Infinity`**](NaN-null-Infinity.md#infinity) может получиться при делении на ноль: ```javascript var x = 1, y = 0 var z = x / y ``` Значением переменной z будет *Infinity* ![warn-25] Значение [**`NaN`**](NaN-null-Infinity.md#NaN) может получиться при попытке выполнения арифметических операций с операндами, которые не являются числами, например: ` 5 * "total" `, а так же при попытке разделить ноль на ноль: ` 0/0 ` ![warn-25] Значение [**`NaN`**](NaN-null-Infinity.md#NaN) не равно никакому другому значению, включая само значение [**`NaN`**](NaN-null-Infinity.md#NaN) ![warn-25] Никакие арифметические операции в JS никогда не будут завершены с ошибкой, поскольку в случае ошибки операция вернет [**`NaN`**](NaN-null-Infinity.md#NaN) ________________________________________________________ ## ![ico25] boolean Логический тип Данные логического типа могут принимать только одно из двух значений: * `true` ( истина ) * `false` ( ложь ) _____________________________________________________________ ## ![ico25] object К данным типа `object` относятся: * [**`объекты`**](data-structures.md#object) * [**`массивы`**](data-structures.md#array) * [**`null`**](NaN-null-Infinity.md#null) ________________________________________________________ ## ![ico25] undefined Специальный тип данных, означающий, что значение переменной не определено ![cap-20] ```javascript var sample console.log ( sample ) ``` В консоль будет выведено `undefined`, поскольку мы не присвоили переменной **sample** никакого значения ________________________________________________________ ## ![ico25] function С помощью ключевого слова `function` создаются объекты, содержащие фрагмент кода Объекты типа `function` являются контейнерами для скриптов Если вывести в консоль такой объект #### ![cap-20] 1 ```javascript function sample ( arg ) { console.log ( arg ) } console.log ( sample ) ``` то мы увидим следующее: ```console ƒ sample ( arg ) { console.log ( arg ) } ``` Такие объекты имеют тип данных `function` #### ![cap-20] 2 ```javascript function sample ( arg ) { console.log ( arg ) } console.log ( typeof sample ) // function ``` Особенность этого типа данных заключается в том, что в любой момент можно инициировать выполнение кода, находящегося в объекте, по его имени ( для этого необходимо после имени функции использовать круглые скобки ) #### ![cap-20] 3 ```javascript function sample () { console.log ( "Привет, студент!" ) } sample () // "Привет, студент!" ``` Мы будем подробнее изучать объекты типа function далее _____________________________________________________________ ### [![hw-30] Упражнения](https://docs.google.com/forms/d/e/1FAIpQLSdegQYfzld6s0CYJekJ2uvu84fUU2-BXiu7g9X2wzcutF1CWQ/viewform)