是否有任何問題在先前分割並覆蓋原始變量的情況下拆分變量?使用.split()結果覆蓋源變量
實施例:
arr = str.split(" ");
arr = arr[0].split("/");
我測試,它工作。但是:
- 這樣做有風險嗎?
- 它會像我期望的那樣在所有瀏覽器上運行嗎?
是否有任何問題在先前分割並覆蓋原始變量的情況下拆分變量?使用.split()結果覆蓋源變量
實施例:
arr = str.split(" ");
arr = arr[0].split("/");
我測試,它工作。但是:
在所有瀏覽器中都可以。沒有風險。
您只是簡單地指定變量arr
來引用新的東西,不管它用於指什麼。 (這實際上並沒有「覆蓋舊陣」,但如果有舊數組的任何其它引用垃圾收集器會照顧它。)
你也可以做一個行:
arr=str.split(" ")[0].split("/");
請注意,according to MDN, .split()
總是返回一個至少包含一個元素的數組,即使源字符串爲空或不包含分隔符。
編輯:如果源字符串和分隔符是空字符串.split()
似乎返回一個空數組。即,"".split("")
返回[]
。感謝Munim指出了這一點。 (但"".split(" ")
返回[""]
所以這個問題的目的將沒有問題。)
感謝您的單線改進! (和你的答案) – ajax333221
如果你知道arr被完全覆蓋,那麼沒有風險。對於較大的代碼段或者其他人要閱讀它的做法可能是不好的做法,但這種邏輯方式沒有任何問題。 如果你想變得更神祕,試試這個: arr = str.split(「」)[0] .split(「/」);
當然,您必須確保所有各種評估(如果例如,您沒有空格,那麼[0]將爲空,並且您將得到一個錯誤。 如果你知道你總是在str中有一個空格,那麼這將是上面代碼的最難閱讀的版本;)
我會修改它爲'arr = str.split(''); arr = arr? arr [0] .split('/'):'''除非你希望它在分割空間時返回0結果時出錯。 – JesseBuesking
我在某些情況下有這樣做的習慣,所以我不必創建一堆只是短暫的變量。我沒有發現任何問題,它可以在所有瀏覽器上運行。 –
只要arr> 0個元素就可以。 –