javascript - 使用ES6的 对象字面量简写语法(object-shorthand), IDEA提示警告
怪我咯
怪我咯 2017-04-11 13:06:27
[JavaScript讨论组]

const obj = {
  b: 1,
  func1: function () {
    return obj.b;
  },
  func2 () {
    return obj.b;
  }
};

obj.func1();
obj.func2();

Intellij IDEA 2017.1中, func1 没有警告, func2 却提示 Variable might not have been initialized6, 为什么?

注:

  1. 低版本IDEA 也存在问题

  2. JavaScript language version 选择了 ECMAScript 6

  3. Node.js and NPM 选择了 7.7.3

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(2)
大家讲道理

这个和 IDE 无关,而是在 JS 中,两种写法的区别。

第一种写法,func1 是在执行那一行的时候才定义的,而第二种写法是在执行obj的时候就已经定义了的。

由于 func2 是在定义 obj 的过程中定义的,因此,当执行上下文处于 func2 的时候,obj 的定义可能还没有执行完,也就会认为可能找不到 obj

怪我咯

谢邀。

并非是IDE的BUG,是写法问题。

你看func1func2的区别,一个传统写法,一个ES6写法。 而func1其实有一个告警, 说func1没有被使用,所以它里面的告警就没必要提示了,也就是你的疑问,为什么func1没有提示。

而为什么func2的obj.b有提示呢? 当前IDE版本对ES6声明函数的方式还不支持检测是否被使用,所以认为func2是合理的,对函数内部进行检测并告警提示。

最后,关于这个提示,说这个变量可能为被声明,建议你还是采纳比较好,这是一种写法习惯上的问题,obj应该使用this去替代。你这种写法相当于外部调用一样。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号