2013-03-13 48 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。儘管如此,還是有很多。 「這不會造成速度差異。」