2013-03-13 51 views
0

在JavaScript中,我构建了类似tic-tac-toe(但更复杂)的东西。任何给定的领域都可以有三个值:黑色的一块,白色的一块或没有。你会用什么来表示这些值?考虑到你一次会传递约300+。你会选择哪一个三值的“JavaScript枚举”?

我首先想到'B','W'和'N'。然后我想到了0,1和2,现在我正在考虑真,假和空。就JavaScript而言,哪个更好?更快?更习惯?

回答

2

这不会造成速度差。

就我个人而言,我会去0,1,2。

一般来说,我会避免在undefined,null和false之间做出区别。这只会导致某个条件出现一些错误。在你的情况下,无论如何,undefined似乎是一个相当差的选择,因为该字段的内容不是未定义的/未知的,而是明确定义为空的。

+0

“这不会造成速度差异。”你可以用一个链接来解释整个存储与真/假/空的关系吗? – Oin 2013-03-13 23:02:20

+1

不,这只是一个有教养的猜测。我不认为在存储布尔值和整数的方式上会有重大区别。而且我必须认为你的代码中还有其他一些东西也会发生,无论如何,这种差异会使这种差异变得更加渺小。除非你注意到一个问题(描述它),否则我会这样做。但也许别人可以权衡。 – Thilo 2013-03-13 23:04:50

1

正如Thilo指出的,您希望避免使多个值可以使陈述if(position)评估为position为真。尽管如此,我可能会使用null作为空值,因为它似乎对我更有意义。

对于其他的价值观,我一定会选择一些难以混淆的东西。字符串不是很好,因为你要结束使用B而不是W某处沿线和得到恼人的错误,所以12可能是不错的选择。

不过,另一种选择是为了自己的目的制作“enum” - 只需要var black = new Object()var white = new Object()并使用它们即可。这样,它就更清晰地指出你所指的不仅仅是12。尽管如此,还是有很多。 “这不会造成速度差异。”