Выбор ответа Senior this, call, apply, bind обновлено

Примитив в качестве this

Вопрос

Что выведет код?

'use strict';
function kind() { return typeof this; }
console.log(kind.call(5), kind.call(null));

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: 'number' 'object'. В строгом режиме this передаётся как есть, без преобразований: 5 остаётся числом, typeof даёт 'number'; null остаётся null, а typeof null это 'object'.

Варианты ответа

  1. 'object' 'object'
  2. 'number' 'object'правильный ответ
  3. 'number' 'undefined'
  4. 'object' 'undefined'

Разбор

В строгом режиме this передаётся как есть, без преобразований: 5 остаётся числом, typeof даёт 'number'; null остаётся null, а typeof null это 'object'. В нестрогом режиме примитив обернулся бы в объект Number (тоже 'object'), а null заменился бы глобальным объектом, и вышло бы 'object' 'object'. Варианты с 'undefined' путают null с undefined.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.