Как уже отмечалось, спецификация говорит так. Но поскольку реализация JavaScript предшествует написанию спецификации ECMAScript, и спецификация была осторожна, чтобы не исправить недостатки первоначальной реализации, остается вопрос о том, почему это было сделано в первую очередь. Дуглас Крокфорд называет это ошибкой . Киро Риск считает, что это сорта имеет смысл :
. Поводом для этого является то, что
null
, в отличие отundefined
, был (и до сих пор) используется, когда появляются объекты. Другими словами,null
часто используется для обозначения пустой ссылки на объект. Когда Брендан Эих создал JavaScript, он следовал той же парадигме, и имело смысл (возможно) вернуть «объект». Фактически, спецификация ECMAScript определяетnull
как примитивное значение, которое представляет намеренное отсутствие какого-либо значения объекта (ECMA-262, 11.4.11).
Я удалил ниже строк ....
var content = this.gridOptions.api.getDataAsExcel(params);
var workbook = XLSX.read(content, {type: 'binary'});
var xlsxContent = XLSX.write(workbook, {bookType: 'xlsx', type: 'base64'});
this.myService.download(params, xlsxContent);
и сохранил только ...
this.gridOptions.api.exportDataAsExcel(params);