JavaScript 字串解構賦值

admin發表於2018-08-25

所有解構賦值的目的都是為了變數賦值方便,有些操作是普通賦值方式難以做到的。

字串解構賦值原本可以不用單獨介紹,因為它是陣列解構賦值和物件解構賦值的一部分。

但是由於字串從表象上看起來與陣列和物件截然不同,所以單獨做一下介紹。

相關內容可以參閱如下兩篇文章:

(1).JavaScript陣列解構賦值一章節。

(2).JavaScript物件解構賦值一章節。

一.陣列解構賦值:

如果一個物件具有Iterator介面,就可以進行陣列解構賦值。

關於Iterator介面可以參閱JavaScript Iterator遍歷器一章節。

字串具有此介面,所以可以進行陣列解構賦值。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
let [a, b, c, d] ="螞蟻部落";
console.log(a,b,c,d);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/25/003651l4k98kts3ttk0xj8.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

可以看到字串"螞蟻部落"中的字元就好像陣列的元素一樣,這都是Iterator遍歷器功勞。

二.物件結構賦值:

字串也可以參與物件結構賦值,因為字串也具有length,toString等屬性和方法。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
let{length,toString}="螞蟻部落";
console.log(length);
console.log(toString===String.prototype.toString);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/25/003735phhha77vearjhq8j.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

字串"螞蟻部落"雖然表面上看一個值型別資料,怎麼會具有length等屬性。

這是因為當它在使用的時候,首先會臨時包裝為一個物件,於是可以使用String物件的方法或者屬性。

看如下程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
console.log("螞蟻部落".length);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/25/003832ql9fstpzkz95p8lt.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

那麼上面的物件解構賦值就很容易理解了。

相關文章