【问题标题】:a.style.display: Value assigned to primitive will be losta.style.display:分配给图元的值将丢失
【发布时间】:2016-11-22 15:28:43
【问题描述】:

考虑一下这个 JavaScript sn-p:

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

IntelliJ IDEA 2016.2 突出显示 a.style.display 并给出以下提示:

分配给原语的值将丢失

检查 JavaScript 原始类型包装器的不当使用。另外,当原始类型的属性被修改时会产生警告,因为分配的值会丢失

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

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

代码似乎在 Chrome 和 Edge 中运行良好。有什么关系?

【问题讨论】:

  • 我已经看到了这个问题,但并没有真正理解 cmets。另外,我这里没有循环,甚至没有函数。
  • 你在函数内部吗?
  • 在我的原始代码中,是的,我在一个函数内部。但正如您从屏幕截图中看到的那样,即使 sn-p 是文件的唯一内容,也会发生这种情况。
  • 问题已列出here

标签: javascript intellij-idea


【解决方案1】:

您的代码没有什么不妥之处,IntelliJ 的类型推断有点混乱(JavaScript 的这方面特别令人困惑)。

它的 linter 看到一个字符串并假设你会尝试这样的事情:

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

primitive.vowels;
// => undefined

这会导致“丢失”价值。

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

【讨论】:

    猜你喜欢
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    相关资源
    最近更新 更多