Типизация - ШРИ 2024

Поделиться
HTML-код
  • Опубликовано: 24 янв 2025

Комментарии • 10

  • @EvilFuzzy
    @EvilFuzzy 5 месяцев назад

    Отличное объяснение. Без воды и подробно. Спасибо докладчику.
    Единственное названия переменных сделаны на коленке

  • @chikenmacnugget
    @chikenmacnugget 6 месяцев назад +1

    Чел на час размазал простую мысль о том, что нельзя присвоить тип "а" туда где ожидается тип "б". Браво

  • @localhost666
    @localhost666 7 месяцев назад

    {} - [] будет NaN, а не -0

    • @mukhindev
      @mukhindev 7 месяцев назад

      Зависит от контекста в котором это выражение находится. {} - [] вернёт -0, ({} - []) вернёт NaN

    • @localhost666
      @localhost666 7 месяцев назад

      @@mukhindev а в чем собственно разница данных выражений?

    • @localhost666
      @localhost666 7 месяцев назад +1

      Признаю, действительно -0.
      Вопрос какого х*я??
      Массив будет приведен к 0.
      Объект же е строке обжект обжект, которая далее станет NaN, итог NaN.
      Где ошибка в рассуждении?..

    • @mukhindev
      @mukhindev 7 месяцев назад

      ​@@localhost666 без скобок {} определяется как блок (block statement), а со скобками как объект. Это особенности синтаксического разбора.
      К примеру, если это выражение присваивать через = переменной, парсеру однозначно понятно что {} не блок и будет тоже NaN.

    • @mukhindev
      @mukhindev 7 месяцев назад

      По приведению массива к 0. Сначала возвращается пустая строка "", затем приведение пустой строки к числу (из-за +) даст 0. См. про методы valueOf и toString.
      Можно вот так "хакнуть"
      const array = []
      array.valueOf = () => {
      return 42
      }
      console.log(array + 5) // 47