Мастер-классы по Javascript Екатеринбург Ростов-на-Дону Москва Узнать больше...
Содержание (скрыть) Содержание (показать)

Вопросник по преобразованиям

Подумайте, какой результат будет у выражений ниже. Тут не только преобразования типов. Когда закончите - сверьтесь с решением.

'' + 1 + 0
true + false
6 / "3"
"2" * "3"
4 + 5 + "px"
"$" + 4 + 5

"4" - 2

"4px" - 2

7 / 0

({})[0]

parseInt("09")

5 && 2

2 && 5

5 || 0

0 || 5
null + 1
undefined + 1
[1] + 1
[] + null + 1
[[0]][0][0]

Решение
Решение

'' + 1 + 0 = "10"  
true + false = 1
6 / "3" = 2
"2" * "3" = 6
4 + 5 + "px" = "9px"
"$" + 4 + 5
 = "$45"
"4" - 2
 = 2
"4px" - 2
 = NaN
7 / 0
 = Infinity
({})[0]
 = undefined // (1)
parseInt("09")
 = "0" или "9" // (2)
5 && 2
 = 2
2 && 5
 = 5
5 || 0
 = 5
0 || 5 = 5
null + 1 = 1 // (3)
undefined + 1 = NaN // (4) 
[1] + 1 = "11" // (5)
[] + null + 1 = "null1" // (6)
[[0]][0][0] = 0 // (7)

  1. Фигурные скобки — это создание пустого объекта, у него нет свойства '0'. Так что undefined.
    Обратите внимание на внешние, круглые скобки. Если их убрать и запустить {}[0] в отладочной консоли браузера — будет 0, т.к. скобки {} будут восприняты как пустой блок кода, после которого идёт массив.
  2. В некоторых браузерах parseInt без второго аргумента интерпретирует 09 как восьмиричное число.
  3. null при численном преобразовании становится 0
  4. undefined при численном преобразовании становится NaN
  5. Массив преобразуется в строку "1". Оператор "+" при сложении со строкой приводит второй аргумент к строке — значит будет "1" + "1" = "11".
  6. Массив преобразуется в пустую строку "" + null + 1, оператор "+" видит, что слева строка и преобразует null к строке, получается "null" + 1, и в итоге "null1".
  7. [[0]] — это вложенный массив [0] внутри внешнего [ ]. Затем мы берём от него нулевой элемент, и потом еще раз.

    Если это непонятно, то посмотрите на такой пример:

    alert( [1,[0],2][1] );
    

    Квадратные скобки после массива/объекта обозначают не другой массив, а взятие элемента.

#226
Наверх

Реклама

Нашли опечатку?

Нашли опечатку на сайте? Что-то кажется странным?
Выделите соответствующий текст и нажмите Ctrl+Enter!

Последние Комментарии

Помоги другим!

Помоги другим узнать о хорошей статье!