2011-12-07 43 views
0

是否有任何問題在先前分割並覆蓋原始變量的情況下拆分變量?使用.split()結果覆蓋源變量

實施例:

arr = str.split(" "); 
arr = arr[0].split("/"); 

我測試,它工作。但是:

  • 這樣做有風險嗎?
  • 它會像我期望的那樣在所有瀏覽器上運行嗎?
+0

我會修改它爲'arr = str.split(''); arr = arr? arr [0] .split('/'):'''除非你希望它在分割空間時返回0結果時出錯。 – JesseBuesking

+0

我在某些情況下有這樣做的習慣,所以我不必創建一堆只是短暫的變量。我沒有發現任何問題,它可以在所有瀏覽器上運行。 –

+0

只要arr> 0個元素就可以。 –

回答

3

在所有瀏覽器中都可以。沒有風險。

您只是簡單地指定變量arr來引用新的東西,不管它用於指什麼。 (這實際上並沒有「覆蓋舊陣」,但如果有舊數組的任何其它引用垃圾收集器會照顧它。)

你也可以做一個行:

arr=str.split(" ")[0].split("/"); 

請注意,according to MDN, .split()總是返回一個至少包含一個元素的數組,即使源字符串爲空或不包含分隔符。

編輯:如果源字符串分隔符是空字符串.split()似乎返回一個空數組。即,"".split("")返回[]。感謝Munim指出了這一點。 (但"".split(" ")返回[""]所以這個問題的目的將沒有問題。)

+0

感謝您的單線改進! (和你的答案) – ajax333221

0

如果你知道arr被完全覆蓋,那麼沒有風險。對於較大的代碼段或者其他人要閱讀它的做法可能是不好的做法,但這種邏輯方式沒有任何問題。 如果你想變得更神祕,試試這個: arr = str.split(「」)[0] .split(「/」);

當然,您必須確保所有各種評估(如果例如,您沒有空格,那麼[0]將爲空,並且您將得到一個錯誤。 如果你知道你總是在str中有一個空格,那麼這將是上面代碼的最難閱讀的版本;)