Что будет выведено на экран?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
У нас есть две переменные и два блока try/catch
, которые должны поймать ошибки и сохранить их в переменные e1
и e2
.
После этого, мы анализируем, сравниваем содержимое сообщений об ошибках и выводим результат на экран.
Первым делом, давай определим, что лежит внутри e1
и e2
. Чтобы сделать это, нам нужно разобраться что происходит внутри try
блоков.
Попытка доступа и к null.length
, и к undefined.length
бросит исключение, так как свойства length
нет ни у undefined
, ни у null
.
Эти ошибки будут пойманы в блоках catch, как e
и сохранены в переменные e1
и e2
.
Содержимое ошибок будет немного отличаться. Если мы добавим логгирование и выведем e.message
на экран в catch
блоке, мы получим такие строки:
Cannot read property 'length' of null
Cannot read property 'length' of undefined
Дальше, .split(' ')[0]
даст нам первое слово каждого предложения, которое равно Cannot
в обоих случаях. Так что в конце концов, вся программа сводится к такому сравнению:
console.log('Cannot' === 'Cannot')
ОТВЕТ: Выражение внутри console.log
равно true
. Это сообщение и будет выведено на экран.