考虑以下JavaScript代码段:
var a = document.createElement("a");
a.style.display = "none";
IntelliJ IDEA 2016.2突出显示a.style.display
并给出以下提示:CSSStyleDeclaration
不是原始类型,因此对display
的分配不会丢失。String
是包装器类型。我如何(不正确地)使用它?该代码似乎可以在Chrome和Edge中正常运行。这是怎么回事?
最佳答案
您的代码没有什么不妥当的地方,IntelliJ的类型推断变得有些困惑(JavaScript的这一方面特别令人困惑)。
它的短毛猫看到一个字符串,并假设您将尝试执行以下操作:
var primitive = "september";
primitive.vowels = 3;
primitive.vowels;
// => undefined
这将导致“丢失”的值(value)。
为了进一步理解JavaScript的这个怪异部分,我建议使用Angus Croll的出色的深入文章here。