js magic "+" операция

Как мы все знаем, js - слабый язык. В отличие от Java, вы должны объявлять тип переменной при определении переменной. Обычно, когда мы используем операцию '+', мы просто добавляем числа или записываем их в строки, но Есть также несколько сюрпризов, например:
1. Начнем с простого:

 true+true

Напечатано 2, причина в том, что js преобразует true в число 1 и false в 0 при выполнении;

2. Другой извращенец:

[3,4]+[5,6]=?

Если вы знаете принцип детской обуви, скажите мне ответ: 3,45,6, почему это?
Причина проста: прежде всего, давайте поговорим о типах данных js. Основные типы - это undefined, null, number, string, boolean, а также сложные типы данных Array и Object. Когда мы выполняем операцию «+»:
A: если это сложение чисел, будет выполнена обычная операция сложения;
B: если одно из добавлений не является цифрой, то оно будет преобразовано в строковый тип для сращивания строк ;
C: если это сложный тип, Array будет использовать метод string () для преобразования массива в соответствующую строку. Если это пустой массив, это будет ". Если это непустой массив, например , [5,6] будет преобразовано в '5., 6'; если это объект, он вернет '[object Object]' после вызова строкового метода;
поэтому [3,4] + [5,6] = '3,4' + '5,6' = 3,45, 6
3. Неправильное обновление:

{a:4}+[5,6]=?

Согласно приведенному выше методу расчета, мы можем быстро сделать вывод, что это [объект Object] 5,6
{a: 4} + [5,6] = '[object Object]' + '5,6' = [object Object] 5, 6
4 Давайте посмотрим на группу отвратительных дополнений:

[]+{}=?
{}+[]=?

Если вы распечатаете его, вы обнаружите, что первый - это '[object Object]', что соответствует нашей логике вычислений, но второй становится '0' (некоторые браузеры обычно используют '[object Object]') Что касается того, что является причиной 0? Когда первый {} выполняется снова, браузер будет рассматривать его как оператор (объявление), реальное выполнение - + [], когда + [], он передаст Number ([]) в 0
5. Что делать, если два пустых объекты складываются?

{}+{}=?

Результатом выполнения некоторых браузеров является '[object Object] [object Object]', а некоторые результаты выполнения - NaN. Если это NaN, процесс выполнения аналогичен пункту 5, что эквивалентно выполнению + Number ({}) , Итак, результат - NaN.

Итог:
1. число + число = операция сложения, например 2 + 3 = 5
2. число + строка или строка + строка = сращивание строк; 1 + 'a' = '1a'
3. массив + объект = строка (массив) + строка (объект)
4. {} + any = Number (любой)

рекомендация

отblog.csdn.net/weixin_43169949/article/details/95016829
рекомендация