【问题标题】:Webstorm: What does "Must be lvalue" meanWebstorm:“必须是左值”是什么意思
【发布时间】:2019-02-12 11:56:23
【问题描述】:

在编写我的 Angular 应用程序时,我收到了这个“奇怪”的错误消息:

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

代码来自: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">

错误信息:

必须是左值

必须是左值

【问题讨论】:

    标签: angular webstorm


    【解决方案1】:

    这就是使用 JSAnnotator 进行 webstorm 检查的工作原理。

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

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

    如果这个错误听起来像这样会更好:

    ReferenceError: 左侧赋值无效

    另见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"
    
    • 抑制 input 元素的 JSAnnotator

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

    同样,这只是一个警告,如何处理取决于您。

    【讨论】:

    • 我猜版本 2019.1 没有发布,它将修复它。很好的答案
    • 在 2019.1 中,它会针对您的代码显示 Invalid left-hand side in assignment expression 警告。你可以试试EAP 构建
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 2018-04-29
    • 1970-01-01
    相关资源
    最近更新 更多