请考虑以下JavaScript代码段:
var a = document.createElement("a");
a.style.display = "none";
IntelliJ IDEA 2016.2突出显示a.style.display
并提供此提示:
分配给基元的值将丢失
检查JavaScript原语类型的包装器是否使用不当。此外,当修改基本类型的属性时将产生警告,因为指定的值将丢失
CSSStyleDeclaration
不是原始类型,因此display
的分配不会丢失。
String
是一个包装类型。我如何使用它(不正确)?
代码似乎在Chrome和Edge中运行良好。这是什么交易?
答案 0 :(得分:0)
你的代码中没有任何不当之处,IntelliJ的类型推断有点混乱(JavaScript的这方面特别令人困惑)。
它的linter看到一个字符串,并假设你会尝试这样的事情:
var primitive = "september";
primitive.vowels = 3;
primitive.vowels;
// => undefined
哪会导致失去'值。
为了进一步理解这个奇怪的JavaScript部分,我推荐Angus Croll的优秀深度文章here。