Почему в Javascript выражение false+[] вернет строку 'false'?
Ведь у пустого массива есть численное представление: +[] вернет 0.
И что с того? В выражении false+[] нет преобразования массива в число. Есть сложение - массив преобразовывается в строку, false тоже. Если интересуют детали - можете ознакомится со спецификацией.
При сложении  если хотя бы один операнд это ОБЪЕКТ , он преобразовывается к примитиву (строка , бул или  число).
При преобразовании массива к примитиву используется join , т.е получается строка. Пустой массив - пустая строка. 
Ну , и  false + '' = 'false' ;