我在 Ruby 中找到了这段代码(来自 here ):
DX = { E => 1, W => -1, N => 0, S => 0 }
我正在考虑如何在 JS 中最好地格式化它,因为它缺少“when”功能。
作为引用,N、S、E 和 W 是“方向”,并且具有如下别名:const N = 1, S = 2, E = 4, W = 8;
我本来想做一个快速箭头功能,但后来就这样了:
function DX(dir) {
if(dir==E) return 1;
if(dir==W) return -1;
if(dir==N) return 0;
if(dir==S) return 0;
}
我觉得有点长,所以我试着缩短它:
function DX(dir) {
if(dir==E) return 1;
if(dir==W) return -1;
return 0;
}
再一次:
function DX(dir) {
return dir==E ? 1 : dir==W ? -1 : 0;
}
但是现在我们遇到了这个代码可读性不佳的问题。所以我决定记录它:
// returns the distance in x traveled by that direction
// E => 1, W => -1, N => 0, S => 0
function DX(dir) {
return dir==E ? 1 : dir==W ? -1 : 0;
}
最后,我将它转换为变量语法和箭头函数:
let DX = (dir) => dir==E ? 1 : dir==W ? -1 : 0;
显然,所有这些代码都有效,但我的问题是作为一种风格,在您看来,无论是在行业中还是在您具体工作的地方,它都被认为是“最佳”?我认为可读性高于一切,那么您认为哪种代码最可读?我个人更喜欢带有文档的部分。
最佳答案
通过使用上面几个用户建议的对象,我们可以使这段代码更简单。但是,我们遇到了对象使用文字字符串“N”、“S”、“E”和“W”而不是变量的数值 1、2、4 和 8 的问题。
我找到了这个问题的答案on SO这只是添加方括号(在 ES6 中):
const N = 1, S = 2, E = 4, W = 8;
const DX = { [E]: 1, [W]: -1, [N]: 0, [S]: 0 };
它可以用于:DX[dir]
关于javascript - 在 JS 中格式化简单 when 函数的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60586229/