A.style.display: значение, присвоенное примитиву, будет потеряно

Рассмотрим этот фрагмент кода JavaScript:

var a = document.createElement("a");
a.style.display = "none";

IntelliJ IDEA 2016.2 выделяет a.style.display и дает этот намек:

Значение, присвоенное примитиву, будет потеряно

Проверяет неправильное использование оберток для примитивных типов JavaScript. Кроме того, будет выдано предупреждение, когда свойство примитивного типа будет изменено, поскольку присвоенное значение будет потеряно

IntelliJ IDEA hint

CSSStyleDeclaration не является примитивным типом, поэтому присваивание display не будет потеряно.

String - это тип оболочки. Как я использую это (неправильно)?

В Chrome и Edge этот код отлично работает. Какая сделка?

Ответ 1

В коде нет ничего неправильного, вывод типа IntelliJ немного запутан (этот аспект JavaScript особенно запутан).

Его linter видит строку и предполагает, что вы попробуете что-то вроде этого:

var primitive = "september";
primitive.vowels = 3;

primitive.vowels;
// => undefined

Это приведет к "потерянному" значению.

Чтобы понять эту странную часть JavaScript, я рекомендую Ангус Кроллу отличную углубленную статью здесь.