考虑以下JavaScript代码段:

var a = document.createElement("a");
a.style.display = "none";
IntelliJ IDEA 2016.2突出显示a.style.display并给出以下提示:

javascript - a.style.display : Value assigned to primitive will be lost-LMLPHP
CSSStyleDeclaration 不是原始类型,因此对display的分配不会丢失。
String 是包装器类型。我如何(不正确地)使用它?
该代码似乎可以在Chrome和Edge中正常运行。这是怎么回事?

最佳答案

您的代码没有什么不妥当的地方,IntelliJ的类型推断变得有些困惑(JavaScript的这一方面特别令人困惑)。

它的短毛猫看到一个字符串,并假设您将尝试执行以下操作:

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

primitive.vowels;
// => undefined

这将导致“丢失”的值(value)。

为了进一步理解JavaScript的这个怪异部分,我建议使用Angus Croll的出色的深入文章here

10-04 22:55