Я оставлю это здесь для вашего удобства, чтобы сделать некоторые выводы в отношении неявного принуждения:
true + false // 1
12 / "6" // 2
"number" + 15 + 3 // 'number153'
15 + 3 + "number" // '18number'
[1] > null // true
"foo" + + "bar" // 'fooNaN'
'true' == true // false
false == 'false' // false
null == '' // false
!!"false" == !!"true" // true
['x'] == 'x' // true
[] + null + 1 // 'null1'
[1,2,3] == [1,2,3] // false
{}+[]+{}+[1] // '0[object Object]1'
!+[]+[]+![] // 'truefalse'
new Date(0) - 0 // 0
new Date(0) + 0 // 'Thu Jan 01 1970 02:00:00(EET)0'
Но вкратце правила таковы, что, если вы не сделаете явное принуждение, Javascript сделает однодля вас (следовательно, неявное ) на основе операции и типов операндов .
Вы можете проверить таблицу Правил JavaScript , чтобы получить полную перспективу.
Одна вещь для примечания :
Приведения JavaScript всегда приводят к одному из скалярных примитивов, таких как строка, число или логическое значение.Нет принуждения, которое приводит к сложному значению, такому как объект или функция.