【发布时间】:2020-05-13 23:50:26
【问题描述】:
ESLint 给我以下错误消息:“'semitoneInterval' 被分配了一个值,但从未使用过 [no-unused-vars]”。我想很明显它不是一个未使用的变量,因为我使用了 30 次。在 switch 的末尾只使用一个return semitoneInterval; 可以修复错误,但我不想使用这种语法,因为写break; 的额外行很多。
import React, { Component } from 'react';
export class Piano extends Component {
getSemitoneIntervals = chordType => {
let semitoneInterval;
switch (chordType) {
case '5': return semitoneInterval = [0, 7];
case '': return semitoneInterval = [0, 4, 7];
case 'm': return semitoneInterval = [0, 3, 7];
case 'sus2': return semitoneInterval = [0, 5, 7];
case 'sus4': return semitoneInterval = [0, 2, 7];
case 'dim': return semitoneInterval = [0, 3, 6];
case 'aug': return semitoneInterval = [0, 4, 8];
case '7': return semitoneInterval = [0, 4, 7, 10];
case 'm7': return semitoneInterval = [0, 3, 7, 10];
case 'maj7': return semitoneInterval = [0, 4, 7, 11];
case 'mM7': return semitoneInterval = [0, 3, 7, 11];
case '6': return semitoneInterval = [0, 4, 7, 9];
case 'm6': return semitoneInterval = [0, 3, 7, 9];
case 'add2': return semitoneInterval = [0, 2, 4, 7];
case 'add9': return semitoneInterval = [0, 4, 7, 14];
case '7-5': return semitoneInterval = [0, 4, 6, 10];
case '7+5': return semitoneInterval = [0, 4, 8, 10];
case 'dim7': return semitoneInterval = [0, 3, 6, 9];
case 'm7b5': return semitoneInterval = [0, 3, 6, 10];
case 'aug7': return semitoneInterval = [0, 4, 8, 10];
case '6/9': return semitoneInterval = [0, 4, 7, 9, 14];
case '9': return semitoneInterval = [0, 4, 7, 10, 14];
case 'm9': return semitoneInterval = [0, 3, 7, 10, 14];
case 'maj9': return semitoneInterval = [0, 4, 7, 11, 14];
case '11': return semitoneInterval = [0, 4, 7, 10, 14, 17];
case 'm11': return semitoneInterval = [0, 3, 7, 10, 14, 17];
case 'maj13': return semitoneInterval = [0, 4, 7, 11, 14, 21];
case '13': return semitoneInterval = [0, 4, 7, 10, 14, 17, 21];
case 'm13': return semitoneInterval = [0, 3, 7, 10, 14, 17, 21];
default: return console.log('Not valid chord type');
}
}
//[..]
}
export default Piano;
【问题讨论】:
-
没用,只返回数组
case '5': return semitoneInterval = [0, 7];应该是case '5': return [0, 7]; -
我建议将所有这些情况提取到一个“地图对象”中,在您的组件之外定义,例如
const intervals = { '5': [0, 7], 'm': [0, 3, 7], ... }。这应该允许你做一些更像return intervals[chordType]的事情。这将比 switch 语句更少的代码噪音。 -
您可能希望将该错误消息再次显示为“分配了一个值,但从未使用过”。我只是创建一个对象,其键是
cases,值是数组。那么函数就是return obj[chordType];。
标签: javascript reactjs eslint