[[DefaultValue]]
вызываемый на объекте массива в конечном итоге получает (и вызывает) метод toString
объекта массива. Этот метод по сути является Array.prototype.toString
, что аналогично вызову Array.prototype.join
для объекта массива (см. 15.4.4.2). Таким образом, toString
для пустого объекта массива возвращает пустую строку (""
), которая является примитивным значением и поэтому возвращается из внутреннего метода [[DefaultValue]].
Таким образом [[DefaultValue]] массива является пустой строкой - , если Array.prototype.string
не перезаписано / затенено, и если Array.prototype.valueOf
не переписано / затенено.
[]+''; // ""
Array.prototype.toString = function(){return 1};
[]+''; // "1"
Array.prototype.valueOf = function(){return 2};
[]+''; // "2"