代码之家  ›  专栏  ›  技术社区  ›  Stefan

webstorm:“must be lvalue”是什么意思?

  •  1
  • Stefan  · 技术社区  · 7 年前

    在编写角度应用程序时,我收到了一条“奇怪”的错误消息:

    "Must be lvalue" Error

    代码运行良好,我找不到任何有关此错误消息的文档。这是什么意思?

    代码来自: https://stackoverflow.com/a/45144391/639035 这是一个公认的15票以上的答案。

    代码:

    <input placeholder="TEST"
           [ngModel]="phone_numbers && phone_numbers[0]?.full_number"
           (ngModelChange)="phone_numbers?.length && phone_numbers[0].full_number=$event">
    

    错误信息:

    必须是左值

    必须是左值

    1 回复  |  直到 7 年前
        1
  •  3
  •   yurzui    7 年前

    这就是使用JSannotator进行Webstorm检查的工作原理。

    尝试使用以下代码创建简单的JS文件:

    let a,b;
    a && b=1;
    

    enter image description here

    如果这个错误听起来像:

    引用错误:左侧分配无效

    也见 issue

    webstorm警告我们,这个代码是不寻常的,例如,我们编写它可能是错误的。

    if (a === 1 && b = 2) {
                     /\
       Seems it should be == or ===. 
       So it's easy to make such mistake like this
    

    如何抑制此错误?

    • 按以下方式重写代码

    (ngModelChange)="phone_numbers?.length ? phone_numbers[0]['full_number']=$event : null"
    
    • Supress JSannotator for the input 要素

    <!--suppress JSAnnotator -->
    <input placeholder="TEST"
           [ngModel]="phone_numbers && phone_numbers[0]?.full_number"
           (ngModelChange)="phone_numbers?.length && phone_numbers[0]['full_number']=$event">
    

    再说一次,这只是一个警告,它取决于你如何处理它。

    推荐文章