Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Типы в JavaScript

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →
Avatar for Artem Artem
March 31, 2016
40

Типы в JavaScript

Беглое представление о приведении типов, динамической типизации и работе с типами данных в JavaScript

Avatar for Artem

Artem

March 31, 2016

Transcript

  1. Типы в JavaScript «We are utterly spoiled by programming every

    day in such a joyful language as Python. JavaScript is our punishment.»
  2. Динамически-типизируемый • 1 + 2 • 1 + ‘2’ •

    [] + {} • {} + [] твоя бабка сильнее чем эта типизация
  3. Динамически-типизируемый • 1 + 2 • 1 + ‘2’ •

    [] + {} • {} + [] // 3 // ‘12’ твоя бабка сильнее чем эта типизация // ‘[object Object]’ // 0
  4. Динамически-типизируемый • 1 + 2 • 1 + ‘2’ •

    [] + {} • {} + [] // 3 // ‘12’ твоя бабка сильнее чем эта типизация // ‘[object Object]’ // 0
  5. Expression | Statement • Выражение • оператор • всё, что

    возвращает значение • +, -, =,… ? : ‘’, , • () — вызов функции • throw • return • continue • {} — блочное выражение. • if…
  6. Операторы • Унарные • бинарные • тернарный • битовые ~

    >> << • … • отношения / сравнения • запятая + “2” // 2 1 + 2 // 3 “1” + “2” // “12” 1 + “2” // “12” “1” + 2 // “12”
  7. • Reference • List • Completion • Property Descriptor, Property

    Identifier, • Lexical Environment и Environment Record • оператор =, new • new Function(no, way); • throw, return, normal… • для определения свойств объекта • про разрешение имён и область видимости Типы спеки со звёздочкой
  8. • Undefined • Null • Boolean • String • Number

    • Object • undefined • null • true, false • Последовательнось символов • (2^64−2^53+3) 64-битовых значений (IEEE 754) • Набор свойств Типы языка без звёздочки
  9. • Undefined • Null • Boolean • String • Number

    • Object Типы языка без звёздочки • false • false • input value • false if ‘’ • false if NaN, +0, -0 • true
  10. объекты и примитивы • Boolean • String • Number •

    Object • a = new Boolean(false); • a = new String(‘Kartoshqa’); • a = new Number(42); • a = new Object(); • a = false; • a = ‘Kartoshqa’; • a = 42; • a = {}; конструктор литерал
  11. объекты и примитивы • Boolean • String • Number •

    Object конструктор литерал • typeof a // ‘object’ • typeof a // ‘object’ • typeof a // ‘object’ • typeof a // ‘object’ • typeof a //“boolean” • typeof a // ‘string’ • typeof a // ‘number’ • typeof a // ‘object’
  12. Итого • Используйте литералы при создании строк, чисел, булевых флагов

    • если не уверены, используйте тройное равно при сравнении • не ленитесь проверить тип объекта, если это объект, руками (или даже привести его), если делаете странное • думайте головой • в JavaScript’e всё нормально как не попасть в непонятное