a.style.display:分配给基元的值将丢失

xeh*_*puk 11 javascript intellij-idea

考虑这个JavaScript代码段:

var a = document.createElement("a");
a.style.display = "none";
Run Code Online (Sandbox Code Playgroud)

IntelliJ IDEA 2016.2突出显示a.style.display并提供此提示:

分配给基元的值将丢失

检查JavaScript原语类型的包装器是否使用不当.此外,当修改基本类型的属性时将产生警告,因为指定的值将丢失

IntelliJ IDEA提示

CSSStyleDeclaration不是原始类型,因此赋值display不会丢失.

String是一个包装类型.我如何使用它(不正确)?

代码似乎在Chrome和Edge中运行良好.这是怎么回事?

rya*_*uen 1

您的代码中没有任何不正确的地方,IntelliJ 的类型推断有点混乱(JavaScript 的这一方面尤其令人困惑)。

它的 linter 看到一个字符串并假设您将尝试如下操作:

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

primitive.vowels;
// => undefined
Run Code Online (Sandbox Code Playgroud)

这会导致“丢失”价值。

为了进一步理解 JavaScript 的这个奇怪的部分,我在这里推荐 Angus Croll 的优秀深入文章。