PhpStorm报“Expression statement is not assignment or call”警告问题
问题解决:消除PhpStorm警告并优化日期格式化逻辑
警告原因分析
Ranges[this.timeRange];这行代码仅读取了对象属性值,但未将其用于赋值、函数调用或任何实际操作,属于无意义的表达式语句,因此PhpStorm会抛出“Expression statement is not assignment or call”警告。
代码优化方案
原代码存在冗余函数调用(每个Ranges项都会执行format),同时触发IDE警告。优化思路是将格式映射与格式化操作分离:先通过timeRange匹配对应的日期格式字符串,再执行一次格式化操作,既解决警告问题,又提升代码效率。
优化后的代码
getRanges() { const currentDate = new Date(); const format = (dateFormat) => { // 简化moment调用:直接传入时间戳/Date对象即可,无需指定解析格式 this.formatedTimeRange.start = moment(currentDate.getTime() - this.timeRange * 60000).format(dateFormat); // 缓存数组最后一项,避免重复索引访问 const lastTimestamp = this.linesData[0].x.at(-1); this.formatedTimeRange.end = moment(new Date(lastTimestamp)).format(dateFormat); }; // 格式映射表:清晰对应timeRange与日期格式 const formatMap = { '1': "YYYY-MM-DD HH:mm:ss", '5': "YYYY-MM-DD HH:mm:ss", '15': "YYYY-MM-DD HH:mm:ss", '60': "YYYY-MM-DD HH:mm", '180': "YYYY-MM-DD HH:mm", '360': "YYYY-MM-DD HH:mm", '720': "YYYY-MM-DD HH:mm", '1440': "YYYY-MM-DD HH:mm", '2880': "YYYY-MM-DD HH", '10080': "YYYY-MM-DD HH", '43200': "YYYY-MM-DD" }; // 获取目标格式并执行格式化,彻底消除警告 const targetFormat = formatMap[this.timeRange]; if (targetFormat) { format(targetFormat); } }
关键优化点
- 消除IDE警告:替换无意义的属性访问为实际的函数调用操作
- 减少冗余计算:原代码会执行所有Ranges项的format调用,现在仅执行一次对应格式的格式化
- 提升可维护性:格式映射表独立分离,修改或新增timeRange格式对应关系更直观
- 性能优化:缓存数组最后一个时间戳,避免重复访问数组索引
- 代码规范:用
const替代var声明变量,符合ES6标准;简化moment调用逻辑,减少冗余代码
内容的提问来源于stack exchange,提问作者Alvaro Navarrete
相关产品推荐
相关产品推荐

