2013-10-17 33 views
0

我知道能夠使用typeof類型,不過,我想知道如果爲了弄清楚,如果anyVariable是使用比較反對任何其他變量的字符串,以確定在JavaScript

String(anyVariable) === anyVariable 

字符串:

  • 是一種普遍有效的方法嗎?
  • 在瀏覽器中始終如一地工作?
  • 有沒有什麼隱患?
+1

爲什麼在世界上你會這樣做?正如你現在所看到的,如果你想知道它是一個字符串,就使用'typeof'。你想要做的只是更復雜,並會表現得更糟。 – jfriend00

+0

在'typeof'(我很少使用)之前,我想出了這個想法。我想知道第一個想法是否是一個有效的方法,並決定問。 – SquareCat

+0

所以,現在你已經知道'typeof'爲什麼這樣做效率低於語言中指定的方式呢?除非你有理由變得更加複雜,否則越簡單越好。 – jfriend00

回答

0

我可以認爲沒有理由使用你的方法與簡單得多的typeof。你的表現可能會變差(Matti的jsperf減慢15倍)並且更加複雜。

您的方法將需要多個內存操作(創建字符串對象,然後爲其分配字符串值),然後需要運行垃圾回收器,而typeof只是查看內部javascript對象的屬性。

如有疑問,請選擇解決問題的最簡單方法。

如果有疑問,請選擇語言定義中指定的用於解決問題的方法。

如有疑問,請選擇需要較少內存操作的方法。

1

我會說不這樣做,並使用typeof,因爲「字符串」用於操縱存儲的文本,而不是比較類型。最好將這些功能用於他們的預期用途,以確保最穩定,並從中獲得最佳實踐。另外,目的是用方法擴展類型。所以你基本上會導致更多的工作和處理,而不僅僅是一種類型比較。希望能夠回答它,儘管這是一個只有「意見」作爲答案的問題。你不會創建一個新的對象,將它分配給你當前的對象,來檢查它是否是一種對象?不,你只會使用「typeof」。

+0

你最美妙地解釋了爲什麼'typeof'是合理的方式! – SquareCat

+0

我也很喜歡jfriend00的回覆,只好投票。就像我說的,一個開放式的答案,但合理的問題。在.net中提醒我那些問題就像「爲什麼要使用int而不是Int32」。這是有原因的,但不是兩者都不正確。只有「最佳做法」。 – Casey

相關問題